%!PS-Adobe-2.0
%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
%%Title: bison.dvi
%%Pages: 108
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips -o ../docs/bison.ps bison.dvi
%DVIPSParameters: dpi=300, comments removed
%DVIPSSource:  TeX output 1995.08.18:1844
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
.1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}
if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
TeXDict begin 40258437 52099154 1000 300 300 (bison.dvi)
@start /Fa 1 59 df<78FCFCFCFC7806067B8510>58 D E /Fb
1 111 df<1F8F800730C00740E00780E00700E00700E00700E00E01C00E01C00E01C00E
01C00E01C00E01C01C03801C0380FF9FF01410808F15>110 D E
/Fc 51 123 df<00FE000381000601800E03801C01001C00001C00001C00001C00001C00
00FFFF801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C03801C0380FF8FF0141A809915>12 D<00FF800383800603800E03801C0380
1C03801C03801C03801C03801C0380FFFF801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0141A809915>I<0080
0100020004000C00080018003000300030006000600060006000E000E000E000E000E000
E000E000E000E000E0006000600060006000300030003000180008000C00040002000100
008009267D9B0F>40 D<8000400020001000180008000C00060006000600030003000300
030003800380038003800380038003800380038003800300030003000300060006000600
0C0008001800100020004000800009267E9B0F>I<60F0F07010101020204040040B7D83
0B>44 D<FFC0FFC00A0280880D>I<0004000C0018001800180030003000300060006000
6000C000C000C00180018001800300030003000600060006000C000C000C001800180018
00300030003000600060006000C000C0000E257E9B13>47 D<07E01C38381C300C700E60
066006E007E007E007E007E007E007E007E007E007E00760066006700E300C381C1C3807
E010187F9713>I<03000700FF0007000700070007000700070007000700070007000700
0700070007000700070007000700070007007FF80D187D9713>I<0F8010602030403880
3CC01CE01C401C003C003800380070006000C001800100020004040804100430083FF87F
F8FFF80E187E9713>I<07E01838201C601E700E201E001E001C001C0038007007E00038
001C000E000F000FE00FE00FC00F400E601C183807E010187F9713>I<00180018003800
7800F800B8013802380238043808381838103820384038C038FFFF003800380038003800
38003803FF10187F9713>I<30183FF03FE03F80200020002000200020002FC030602030
00380018001C001C401CE01CE01C80184038403030E00F800E187E9713>I<01F807040C
06180E300E300070006000E000E3E0E418E80CF00EE006E007E007E00760076007700630
0E180C0C3807E010187F9713>I<40007FFF7FFE7FFE4004800880108010002000400040
008001800100030003000700060006000E000E000E000E000E00040010197E9813>I<07
E01818300C2006600660067006780C3E181F3007C003E00CF8307C601E600FC007C003C0
03C00360022004181807E010187F9713>I<07E01C303018700C600EE006E006E007E007
E0076007700F3017182707C700070006000E000C700C7018603030600F8010187F9713>
I<000C0000000C0000000C0000001E0000001E0000002F00000027000000270000004380
0000438000004380000081C0000081C0000181E0000100E0000100E00003FFF000020070
000200700004003800040038000400380008001C0008001C003C001E00FF00FFC01A1A7F
991D>65 D<FFFF800E00E00E00700E00380E003C0E003C0E003C0E003C0E003C0E00780E
00700E01E00FFFC00E00F00E00780E003C0E001C0E001E0E001E0E001E0E001E0E001C0E
003C0E00780E00F0FFFFC0171A7F991B>I<003F0201C0C603002E0E001E1C000E1C0006
380006780002700002700002F00000F00000F00000F00000F00000F00000700002700002
7800023800041C00041C00080E000803003001C0C0003F00171A7E991C>I<FFFFF80E00
380E00180E00080E000C0E00040E00040E00040E01000E01000E01000E03000FFF000E03
000E01000E01000E01000E00000E00000E00000E00000E00000E00000E00000E0000FFE0
00161A7F9919>70 D<FFE0000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00080E00080E00080E0018
0E00100E00300E00700E00F0FFFFF0151A7F9918>76 D<FF0000FF0F0000F00F0000F00B
8001700B80017009C0027009C0027009C0027008E0047008E00470087008700870087008
700870083810700838107008381070081C2070081C2070080E4070080E4070080E407008
07807008078070080300701C030070FF8307FF201A7F9923>I<FE007FC00F000E000F00
04000B80040009C0040009C0040008E00400087004000870040008380400081C0400081C
0400080E04000807040008038400080384000801C4000800E4000800E400080074000800
3C0008003C0008001C0008000C001C000C00FF8004001A1A7F991D>I<FFFF00000E01C0
000E0070000E0078000E003C000E003C000E003C000E003C000E003C000E0078000E0070
000E01C0000FFF00000E0380000E00C0000E00E0000E0070000E0070000E0070000E0078
000E0078000E0078000E0078400E003C400E001C80FFE00F001A1A7F991C>82
D<0FC21836200E6006C006C002C002C002E00070007E003FE01FF803FC007E000E000700
03800380038003C002C006E004D81887E0101A7E9915>I<FF801FC01C0007001C000600
0E0004000E0004000E000400070008000700080003801000038010000380100001C02000
01C0200000E0400000E0400000E040000070800000708000007980000039000000390000
001E0000001E0000001E0000000C0000000C00001A1A7F991D>86
D<1FC000387000383800101C00001C00001C0003FC001E1C00381C00701C00E01C00E01C
80E01C80E03C80705F801F8F0011107F8F13>97 D<FC00001C00001C00001C00001C0000
1C00001C00001C00001C00001C00001CFC001D07001E03801C01C01C00C01C00E01C00E0
1C00E01C00E01C00E01C00E01C01C01C01801E030019060010F800131A809915>I<07F8
1C1C381C70087000E000E000E000E000E000E0007000700438081C1807E00E107F8F11>
I<003F0000070000070000070000070000070000070000070000070000070003E7000C17
00180F00300700700700E00700E00700E00700E00700E00700E00700600700700700380F
001C370007C7E0131A7F9915>I<07C01C3030187018600CE00CFFFCE000E000E000E000
6000700438081C1807E00E107F8F11>I<01F007180E381C101C001C001C001C001C001C
00FFC01C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF800D1A80
990C>I<0FCF001871803030007038007038007038007038003030001860002FC0006000
006000007000003FF0003FFC001FFE00600F00C00300C00300C00300C00300600600381C
0007E00011187F8F13>I<FC00001C00001C00001C00001C00001C00001C00001C00001C
00001C00001C7C001D87001E03801E03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C0380FF9FF0141A809915>I<183C3C18000000000000FC1C
1C1C1C1C1C1C1C1C1C1C1C1C1CFF081A80990A>I<FC00001C00001C00001C00001C0000
1C00001C00001C00001C00001C00001C1FC01C0F001C0C001C18001C20001C40001CE000
1DE0001E70001C78001C38001C1C001C1E001C0F001C0F80FF9FE0131A809914>107
D<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C00FF80091A80990A>I<FC7C1F001D8E63801E0781C0
1E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0
1C0701C01C0701C01C0701C0FF9FE7F81D107F8F20>I<FC7C001D87001E03801E03801C
03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF014
10808F15>I<07E01C38300C700E6006E007E007E007E007E007E0076006700E381C1C38
07E010107F8F13>I<FCFC001D07001E03801C01C01C01C01C00E01C00E01C00E01C00E0
1C00E01C00E01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C0000
1C0000FF80001317808F15>I<FC781D9C1E1C1E081C001C001C001C001C001C001C001C
001C001C001C00FF800E10808F0F>114 D<1F2060E04020C020C020F0007F003FC01FE0
00F080708030C030C020F0408F800C107F8F0F>I<0800080008000800180018003800FF
C038003800380038003800380038003800382038203820382018201C4007800B177F960F
>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C07800C07800E0B8003F3F01410808F15>I<FF0F803C07001C06001C04001C0400
0E08000E080007100007100007100003A00003A00001C00001C00001C00000800011107F
8F14>I<FE7F1F80381C07003C1C06001C0C04001C0E04000E1608000E1708000E170800
072310000723900007A3900003C1A00003C1E0000180C0000180C0000180C00019107F8F
1C>I<FE3F803C1E001C08000E10000F300007600003C00001C00001E00003E000027000
043800083800181C00381E00FC3FC012107F8F14>I<FF0F803C07001C06001C04001C04
000E08000E080007100007100007100003A00003A00001C00001C00001C0000080000080
00010000010000E10000E20000E4000078000011177F8F14>I<FFF8E070C07080E081C0
81C00380070007000E041C041C04380870087038FFF80E107F8F11>I
E /Fd 1 59 df<60F0F06004047D830B>58 D E /Fe 47 125 df<00800180018007E01F
F039BC619CC18EC18EC18EE18471807F801FE00FF001F8019C018E4186E186E186E18671
8C39B81FF00FC00180018000800F1D7E9914>36 D<3806007C0E006C0E00EE1C00EE1C00
EE3800EE38006C38007C700038700000700000E00000E00001C00001C00001C000038000
038000070000070E00071F000E1B000E3B800E3B801C3B801C3B80381B00381F00180E00
111D7F9914>I<01E007F00E38181C38FC71FC731E771EEE0EEE0EEE0EEE0EEE0EEE0EEE
0E771C731871F038E018060E1E07F801F00F177E9614>64 D<01C00003E00003E0000360
000360000770000770000770000770000630000E38000E38000E38000E38001C1C001FFC
001FFC001C1C001C1C00380E00380E00FE3F80FE3F8011177F9614>I<FFF0FFFC381E38
0E3807380738073807380E381E3FFC3FFC381E380E38073807380738073807380E381EFF
FCFFF810177F9614>I<01F18007FF800E1F801C0780380780700380700380700380E000
00E00000E00000E00000E00000E00000E000007003807003807003803807001C07000E0E
0007FC0001F00011177F9614>I<FFE000FFF800383C00381E00380E0038070038070038
0700380380380380380380380380380380380380380380380380380700380700380E0038
1E00383C00FFF800FFE00011177F9614>I<FFFF00FFFF00380700380700380700380700
3800003800003838003838003FF8003FF800383800383800380000380000380000380380
380380380380380380FFFF80FFFF8011177F9614>I<03C60FFE1C3E181E381E700E700E
600EE000E000E000E000E07FE07FE00E600E700E700E381E181E1C3E0FFE03CE10177F96
14>71 D<FE3F80FE3F80380E00380E00380E00380E00380E00380E00380E00380E003FFE
003FFE00380E00380E00380E00380E00380E00380E00380E00380E00380E00FE3F80FE3F
8011177F9614>I<FFF8FFF8070007000700070007000700070007000700070007000700
0700070007000700070007000700FFF8FFF80D177D9614>I<FE3F00FE3F00381C003838
0038780038700038E00039E00039C0003B80003FC0003FE0003EE0003CF0003C70003878
00383800381C00381C00380E00380E00FE1F80FE1F8011177F9614>75
D<FF00FF0038003800380038003800380038003800380038003800380038003800380038
07380738073807FFFFFFFF10177E9614>I<FC1F80FC1F807C1F00763700763700763700
76370077770077770073670073670073670073E70071C70071C700700700700700700700
700700700700700700F80F80F80F8011177F9614>I<FE3F80FE3F803E0E003B0E003B0E
003B0E003B0E003B8E00398E00398E0039CE0039CE0039CE0038CE0038CE0038EE00386E
00386E00386E00386E00383E00FE3E00FE3E0011177F9614>I<1FF07FFC783C701CE00E
E00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00E701C783C7FFC1FF0
0F177E9614>I<FFF0FFFC381E380E38073807380738073807380E381E3FFC3FF0380038
00380038003800380038003800FE00FE0010177F9614>I<FFE000FFF800383C00381C00
380E00380E00380E00380E00381C00383C003FF8003FF000383800381C00381C00381C00
381C00381C00381C80381DC0381DC0FE0F80FE070012177F9614>82
D<0FCC1FFC307C603CE01CE01CE01CE00070007E003FE00FF001F8001C001E000E600EE0
0EE00EF01CF838FFF0C7E00F177E9614>I<7FFF80FFFF80E1C380E1C380E1C380E1C380
01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C0000FF8000FF80011177F9614>I<FE0FE0FE0FE03803803803803803
803803803803803803803803803803803803803803803803803803803803803803803803
803803801C07001C07000E0E0007FC0001F0001317809614>I<FC1F80FC1F80380E0038
0E00380E003C1E001C1C001C1C001C1C001C1C000E38000E38000E38000E380006300007
700007700007700003600003600003E00003E00001C00011177F9614>I<7E3E007E3E00
1C3C001E38000E78000F700007700007E00003E00003C00001C00003C00003E00003E000
0770000770000E78000E38001C3C001C1C003C1E00FE3F80FE3F8011177F9614>88
D<FC1F80FC1F80380E003C1E001C1C001E3C000E38000E380007700007700003600003E0
0003E00001C00001C00001C00001C00001C00001C00001C00001C00007F00007F0001117
7F9614>I<1FC0007FF000707800201800001C00001C0007FC001FFC003C1C00701C00E0
1C00E01C00E01C00707C003FFF800F8F8011107E8F14>97 D<FC0000FC00001C00001C00
001C00001C00001C00001CF8001DFE001F07001E03001C03801C01C01C01C01C01C01C01
C01C01C01C01C01C03801E03001F0E001DFC000CF8001217809614>I<03F80FFE1C0E38
0470006000E000E000E000E00060007000380E1C1E0FFC03F00F107E8F14>I<007E0000
7E00000E00000E00000E00000E00000E0007CE000FFE001C3E00301E00700E00E00E00E0
0E00E00E00E00E00E00E00E00E00700E00301E00383E001FEFC007CFC012177F9614>I<
07E00FF01C38301C700CE00EE00EFFFEFFFEE00060007000380E1C1E0FFC03F00F107E8F
14>I<00FC01FE038E07040700070007007FFEFFFE070007000700070007000700070007
000700070007000700FFF8FFF80F177F9614>I<07CF001FFF80383B80301800701C0070
1C00701C003018003838003FF00037C0007000007000003FF8001FFC003FFE00700F00E0
0380E00380E00380E003807007003C1E001FFC0007F00011197F8F14>I<FC0000FC0000
1C00001C00001C00001C00001C00001C78001DFE001F86001E07001C07001C07001C0700
1C07001C07001C07001C07001C07001C07001C0700FF8FE0FF8FE01317809614>I<0600
0F000F0006000000000000000000FF00FF00070007000700070007000700070007000700
070007000700FFF8FFF80D187C9714>I<FC0000FC00001C00001C00001C00001C00001C
00001CFF801CFF801C1C001C38001C70001CE0001DC0001FE0001FE0001E70001C38001C
3C001C1C001C0E00FF1F80FF1F801117809614>107 D<FF80FF80038003800380038003
8003800380038003800380038003800380038003800380038003800380FFFEFFFE0F177E
9614>I<FB8E00FFDF003CF3803CF38038E38038E38038E38038E38038E38038E38038E3
8038E38038E38038E380FEFBE0FE79E01310808F14>I<FC7800FDFE001F86001E07001C
07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF8FE0FF8FE013
10808F14>I<07C01FF03C78701C701CE00EE00EE00EE00EE00EE00E701C783C3C781FF0
07C00F107E8F14>I<FCF800FDFE001F07001E03001C03801C01C01C01C01C01C01C01C0
1C01C01C01C01C03801E03001F0E001DFC001CF8001C00001C00001C00001C00001C0000
1C0000FF8000FF80001218808F14>I<FE1F00FE7F800EE3800F81000F00000F00000E00
000E00000E00000E00000E00000E00000E00000E0000FFF000FFF00011107F8F14>114
D<0FD83FF86038C038C038F0007F803FF007F8001C6006E006F006F81CFFF8CFE00F107E
8F14>I<06000E000E000E000E007FFCFFFC0E000E000E000E000E000E000E000E000E0E
0E0E0E0E0E1C07F801F00F157F9414>I<FC3F00FC3F001C07001C07001C07001C07001C
07001C07001C07001C07001C07001C07001C07001C1F000FFFE003E7E01310808F14>I<
FE3F80FE3F803C1E001C1C001C1C001C1C000E38000E38000E3800063000077000077000
07700003E00003E00003E00011107F8F14>I<7E3F007E3F001E3C000E780007700007E0
0003E00001C00003C00003E0000770000E78000E38001C1C00FE3F80FE3F8011107F8F14
>120 D<FE3F80FE3F801C0E001C1C001C1C000E1C000E38000E38000738000730000730
0003700003700003E00001E00001E00001C00001C00001C0000380007380007700007E00
003C000011187F8F14>I<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
E0E0E0E0031D789914>124 D E /Ff 19 120 df<387CFEFEFE7C3807077D860D>46
D<000700000007000000070000000F8000000F8000001FC000001FC000001FC000003FE0
000037E0000037E0000063F0000063F0000063F00000C1F80000C1F80000C1F8000180FC
000180FC000180FC0003007E0003FFFE0007FFFF0006003F0006003F000E001F800C001F
800C001F801C000FC0FF80FFF8FF80FFF81D1F7E9E22>65 D<FFFFF000FFFFFC000F807E
000F803F000F803F000F803F800F803F800F801F800F803F800F803F800F803F800F803F
000F807E000F80FE000FFFF8000FFFFE000F803F000F801F800F800FC00F800FC00F800F
E00F800FE00F800FE00F800FE00F800FE00F800FC00F801FC00F801F800F803F80FFFFFE
00FFFFF8001B1F7E9E20>I<0FF0003FFC007E1E007E1F007E0F807E0F80180F80000F80
00FF800FFF801F0F807C0F807C0F80F80F80F80F80F80F80F817807C37803FE3F00F81F0
14147F9316>97 D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F3F001FFFC01FC3E01F01F01F00F81F00F81F00FC1F00FC1F00FC1F
00FC1F00FC1F00FC1F00FC1F00F81F00F81F00F81F01F01FC3E01CFFC0183F0016207F9F
19>I<03F8000FFE001F3F003E3F007E3F007C3F007C0C00FC0000FC0000FC0000FC0000
FC0000FC00007C00007C00007E01803E03801F87000FFE0003F80011147F9314>I<001F
E0001FE00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E003F3
E00FFFE01F0FE03E03E07C03E07C03E07C03E0FC03E0FC03E0FC03E0FC03E0FC03E0FC03
E0FC03E07C03E07C03E03E07E01F0FE00FFBFC03F3FC16207F9F19>I<03F8000FFE001F
0F003E07803C07807C07C07C07C0FC07C0FFFFC0FFFFC0FC0000FC0000FC00007C00007C
00003E00C03E00C01F038007FF0001FC0012147F9315>I<FF0000FF00001F00001F0000
1F00001F00001F00001F00001F00001F00001F00001F00001F1F001F3FC01F63C01F83E0
1F83E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E0
1F03E01F03E0FFE7FCFFE7FC16207E9F19>104 D<1C003E007F007F007F003E001C0000
0000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F00FFE0FFE00B217FA00C>I<FF00FF001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F00FFE0FFE00B207F9F0C>108 D<FE0F80F800FE3FC3FC001E63E6
3E001EC1FC1F001E81F81F001F01F01F001F01F01F001F01F01F001F01F01F001F01F01F
001F01F01F001F01F01F001F01F01F001F01F01F001F01F01F001F01F01F001F01F01F00
1F01F01F00FFE7FE7FE0FFE7FE7FE023147E9326>I<FE1F00FE3FC01E63C01E83E01E83
E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03
E01F03E0FFE7FCFFE7FC16147E9319>I<01F8000FFF001F0F803E07C07C03E07C03E07C
03E0FC03F0FC03F0FC03F0FC03F0FC03F0FC03F0FC03F07C03E07C03E03E07C01F0F800F
FF0003FC0014147F9317>I<FE3C00FE7F001EDF801E9F801F9F801F1F801F06001F0000
1F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF000
1114809313>114 D<0FD83FF87038E018E018E018F800FF807FF03FF81FFC03FE003EC0
0EC00EE00EE00CF81CFFF8C7E00F147F9312>I<0300030003000300070007000F000F00
3F00FFF8FFF81F001F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C1F0C
0F9807F003E00E1D7F9C12>I<FFC3F8FFC3F81F00C01F00C00F81800F81800F818007C3
0007C30007E70003E60003E60001FC0001FC0001FC0000F80000F80000F8000070000070
0015147F9318>118 D<FFCFF1FCFFCFF1FC1F03C0701F03C0601F07E0600F87E0C00F87
E0C00F8CF0C007CCF18007CCF18007D8798003F87B0003F87B0003F87F0003F03F0001F0
3E0001F03E0001E01E0000E01C0000C00C001E147F9321>I E /Fg
14 125 df<001F8000007FE00001FFF80003F07C0007C03C000F801E000F001E001E03EF
003C0FFF003C1FFF00381E3F00783C1F8078780F8078780F80F0700780F0F00780F0F007
80F0F00780F0F00780F0F00780F0F00780F0F00780F070070078780F0078780F00783C1E
00381E3C003C1FFC003C0FF8001E03E0000F0000000F80078007C00F8003F03F0001FFFE
00007FF800001FC00019257DA41F>64 D<07FC00001FFF00003FFFC0003E03E0003E01F0
001C00F00000007800000078000000780000007800003FF80001FFF80007FFF8001FE078
003E0078007C00780078007800F0007800F0007800F0007800F00078007800F8007E03F8
003FFFFFE00FFF3FE003FC0FE01B1A7D991F>97 D<007FE001FFF807FFFC0FC07C1F007C
3E00383C0000780000780000700000F00000F00000F00000F00000F00000F00000700000
7800007800003C003C3E003C1F007C0FC0F807FFF001FFE0007F80161A7C991F>99
D<007F0001FFC007FFE00F81F01F00783E00783C003C78003C78001E70001EF0001EFFFF
FEFFFFFEFFFFFEF00000F000007800007800007800003C001E1E001E1F003E0FC0FC03FF
F801FFF0003F80171A7D991F>101 D<0001FC000007FF00001FFF80003F0F80003C0F80
0078070000780000007800000078000000780000007800007FFFFE00FFFFFE00FFFFFE00
007800000078000000780000007800000078000000780000007800000078000000780000
007800000078000000780000007800000078000000780000007800000078000000780000
00780000007800003FFFF0007FFFF8003FFFF00019257FA41F>I<FFF800FFF800FFF800
007800007800007800007800007800007800007800007800007800007800007800007800
007800007800007800007800007800007800007800007800007800007800007800007800
007800007800007800007800007800007800007800FFFFFCFFFFFCFFFFFC16257CA41F>
108 D<FE3C0F00FEFE3F80FFFF7FC01FCFF3C01F87E1E01F07C1E01F07C1E01E0781E01E
0781E01E0781E01E0781E01E0781E01E0781E01E0781E01E0781E01E0781E01E0781E01E
0781E01E0781E01E0781E01E0781E01E0781E01E0781E0FFC7F1FCFFCFF3FCFFC7F1FC1E
1A80991F>I<00FC0003FF0007FF801F87E01E01E03C00F07C00F8780078780078F0003C
F0003CF0003CF0003CF0003CF0003CF0003CF8007C7800787800787C00F83C00F01E01E0
1F87E007FF8003FF0000FC00161A7C991F>111 D<7F83E000FF9FFC007FBFFE0007FC1F
0007F0078007E003C007C003C0078001E0078001E0078000F0078000F0078000F0078000
F0078000F0078000F0078000F0078000F0078001E007C001E007C003C007E007C007F00F
8007F81F0007BFFE00079FF8000787E00007800000078000000780000007800000078000
0007800000078000000780000007800000078000007FF80000FFFC00007FF800001C2780
991F>I<7FE07E00FFE1FF807FE3FFC001EF87C001FF07C001FC038001F8000001F80000
01F0000001F0000001F0000001E0000001E0000001E0000001E0000001E0000001E00000
01E0000001E0000001E0000001E0000001E0000001E000007FFFE000FFFFE0007FFFE000
1A1A7E991F>114 D<03FC700FFFF03FFFF07C03F07001F0E000F0E000F0E000F0F000F0
7C00003FE0001FFF0007FFC000FFF00003F800007870003CF0001CF0001CF8001CF8001C
FC0038FF00F0FFFFF0E7FFC0E1FE00161A7C991F>I<7FF1FFC07FF1FFE07FF1FFC007C0
7C0003E0780001E0F80000F1F00000F9E000007FE000003FC000003F8000001F8000000F
0000001F0000001F8000003FC0000079E00000F9E00000F0F00001E0F80003E07C0003C0
3C0007803E007FF0FFE0FFF9FFF07FF0FFE01C1A7F991F>120 D<7FF0FFE0FFF8FFF07F
F0FFE00F800F0007801E0007801E0003C01E0003C03C0003C03C0001E03C0001E07C0001
E0780000F0780000F0780000F0F0000078F0000078F0000038E0000039E000003DE00000
1DC000001DC000001FC000000FC000000F8000000F8000000F8000000F0000000F000000
1F0000001E0000001E0000383E00007C3C00007C7C00007CF800007FF000003FE000000F
8000001C277F991F>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F060042F73A91F>124
D E /Fh 1 59 df<70F8F8F87005057C840D>58 D E /Fi 14 122
df<0FF8001FFE003FFF803C0F801803C00001E00001E00001E0003FE003FFE00FFFE03F
C1E07E01E07801E0F001E0F001E0F001E0F001E07803E07C0FE03FFFFF1FFEFF03F03F18
177D961C>97 D<00FF8003FFC00FFFE01F01E03E00C03C0000780000780000F00000F000
00F00000F00000F00000F00000F000007800007800F03C00F03E01F01F03E00FFFC003FF
8000FE0014177C961C>99 D<00FC0003FF000FFFC01F03E03E01E03C00F07800F0780070
F00078F00078FFFFF8FFFFF8FFFFF8F00000F000007800007800783C00783E00F81F81F0
0FFFE003FFC000FE0015177D961C>101 D<0003F8001FFC003FFE007C1E00780C00F000
00F00000F00000F00000F0007FFFFCFFFFFCFFFFFC00F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
7FFFE07FFFE07FFFE017217FA01C>I<00E00001F00001F00001F00000E0000000000000
000000000000000000000000007FF000FFF0007FF00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
00FFFFE0FFFFE0FFFFE013227CA11C>105 D<7FF800FFF8007FF8000078000078000078
000078000078000078000078000078000078000078000078000078000078000078000078
000078000078000078000078000078000078000078000078000078000078000078000078
007FFFF8FFFFFC7FFFF816217DA01C>108 D<7E783C00FEFE7F007FFFFF001FCFE7801F
0F87801F0F87801E0F07801E0F07801E0F07801E0F07801E0F07801E0F07801E0F07801E
0F07801E0F07801E0F07801E0F07801E0F07801E0F07801E0F07807F8FC7E0FFCFE7F07F
8FC7E01C1780961C>I<FF0F8000FF3FE000FFFFF0000FF0F0000FC078000F8078000F80
78000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F00
78000F0078000F0078000F0078000F007800FFF1FF80FFF1FF80FFF1FF8019177F961C>
I<FF1F80FF7FE0FFFFF00FE0F80FC07C0F803C0F001E0F001E0F000F0F000F0F000F0F00
0F0F000F0F000F0F000F0F001E0F801E0F803C0FC07C0FE0F80FFFF00F7FC00F1F000F00
000F00000F00000F00000F00000F00000F00000F00000F0000FFF000FFF000FFF0001823
7F961C>112 D<FFC1FCFFC7FEFFCFFF03DE0F03FC0603F80003F00003E00003E00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000FFFF80FFFF
C0FFFF8018177E961C>114 D<00E00001E00001E00001E00001E00001E00001E0007FFF
F8FFFFF8FFFFF801E00001E00001E00001E00001E00001E00001E00001E00001E00001E0
0001E00001E03C01E03C01E03C01E03C01E03C00F07800FFF8007FE0001F80161E7F9D1C
>116 D<FF07F800FF07F800FF07F8000F0078000F0078000F0078000F0078000F007800
0F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F007800
0F00F8000F00F8000783F80007FFFF8003FF7F8000FC7F8019177F961C>I<7FE3FE007F
E7FF007FE3FE0007C1F00003C3E00003E3C00001F7C00000FF8000007F0000007E000000
3E0000003E0000007E0000007F000000F7800001E7800001E3C00003C1E00007C1F00007
80F0007FE3FF00FFE3FF807FE3FF0019177F961C>120 D<7FE3FF00FFE3FF807FE3FF00
0F0078000F8078000780F8000780F00007C0F00003C0F00003C1E00001E1E00001E1E000
01E1C00000E3C00000F3C00000F38000007380000073800000778000003F0000003F0000
003F0000001E0000001E0000001E0000003C0000003C0000003C00000078000030780000
78F0000079F000007FE000003FC000001F00000019237F961C>I
E /Fj 55 123 df<0007FFE0003FFFE000FC07E003F00FE007E00FE007E00FE00FC007E0
0FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E0FFFFFFE0FFFFFFE0
0FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E0
0FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E0
0FC007E00FC007E0FFFC7FFEFFFC7FFE1F267FA522>13 D<000C00180030006000E001C0
0380078007000F000F001E001E003E003C003C007C007C007C0078007800F800F800F800
F800F800F800F800F800F800F800F800F800780078007C007C007C003C003C003E001E00
1E000F000F0007000780038001C000E0006000300018000C0E367AA818>40
D<C0006000300018001C000E0007000780038003C003C001E001E001F000F000F000F800
F800F800780078007C007C007C007C007C007C007C007C007C007C007C007C0078007800
F800F800F800F000F001F001E001E003C003C00380078007000E001C00180030006000C0
000E367DA818>I<FFFEFFFEFFFEFFFEFFFE0F057F8E14>45 D<3C7EFFFFFFFF7E3C0808
7C8711>I<001C00003C0000FC00FFFC00FFFC0000FC0000FC0000FC0000FC0000FC0000
FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000
FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC007FFFFC7F
FFFC16237CA21F>49 D<01FF0007FFC01E07F03803F86001FC7C00FEFE00FEFE00FFFE00
7FFE007F7C007F3800FF0000FF0000FE0000FE0001FC0001F80003F00007E0000780000F
00001E00003C0000700000E00301C0030380070700060600060FFFFE1FFFFE3FFFFE7FFF
FCFFFFFCFFFFFC18237DA21F>I<01FF0007FFE01E03F03801F83C01FC7E00FE7E00FE7E
00FE3E00FE1C01FE0001FC0001FC0003F80007F0000FC001FF0001FF000007E00001F000
01F80000FC0000FE0000FF0000FF1000FF7C00FFFE00FFFE00FFFE00FEFE00FE7C01FC70
01F83E07F00FFFC001FF0018237DA21F>I<0000380000007800000078000000F8000001
F8000003F8000007F8000006F800000CF800001CF8000038F8000030F8000060F80000E0
F80001C0F8000180F8000300F8000700F8000E00F8001C00F8001800F8003000F8007000
F800E000F800FFFFFFC0FFFFFFC00001F8000001F8000001F8000001F8000001F8000001
F8000001F800007FFFC0007FFFC01A237EA21F>I<18000C1F007C1FFFF81FFFF01FFFE0
1FFFC01FFF801FFC0018000018000018000018000018000018FF001BFFE01F03F01C00F8
0800FC00007E00007E00007E00007F00007F78007FFC007FFC007FFC007FFC007EF8007E
6000FC7000FC3801F81E07E007FFC001FE0018237DA21F>I<001FC0007FF001F03803E0
0C07803E0F807E1F007E3F007E3F007E7E003C7E00007E00007E0000FE3FC0FE7FF0FE80
F8FF80FCFF007CFF007EFE007EFE007FFE007FFE007FFE007F7E007F7E007F7E007F7E00
7F3E007E3F007E1F007C0F80F807C1F003FFC0007F0018237DA21F>I<300000003C0000
003FFFFFC03FFFFFC03FFFFF807FFFFF007FFFFE007FFFFC006000180060001800E00030
00C0006000C000C00000018000000180000003000000060000000E0000000E0000001C00
00001C0000003C0000003C0000007800000078000000F8000000F8000000F8000000F800
0001F8000001F8000001F8000001F8000001F8000001F8000000F00000006000001A257D
A41F>I<00FF8003FFE00F01F81C007C38003C38001E78001E78001E7C001E7E001E7F80
3C7FE03C3FF8781FFDF01FFFC00FFFC003FFE003FFF80FFFFC1E1FFC3C07FE7803FE7800
FFF0003FF0001FF0000FF0000FF0000FF0000E78000E78001C3C00381F80F007FFE001FF
0018237DA21F>I<00001C00000000001C00000000003E00000000003E00000000003E00
000000007F00000000007F0000000000FF8000000000FF8000000000FF80000000019FC0
000000019FC0000000031FE0000000030FE0000000070FF00000000607F00000000607F0
0000000C07F80000000C03F80000001C03FC0000001801FC0000001801FC0000003000FE
0000003000FE0000007FFFFF0000007FFFFF000000E0007F800000C0003F800000C0003F
80000180003FC0000180001FC0000380001FE0000300000FE0000300000FE00007000007
F000FFF000FFFF80FFF000FFFF8029257EA42E>65 D<FFFFFFE000FFFFFFFC0003F0007F
0003F0003F8003F0001FC003F0000FE003F0000FE003F0000FF003F0000FF003F00007F0
03F0000FF003F0000FF003F0000FE003F0001FE003F0001FC003F0007F8003F001FE0003
FFFFF80003FFFFFF0003F0003FC003F0000FE003F00007F003F00007F803F00003F803F0
0003FC03F00003FC03F00003FC03F00003FC03F00003FC03F00003FC03F00003F803F000
07F803F0000FF003F0001FE003F0007FC0FFFFFFFF00FFFFFFF80026257EA42C>I<0000
FF8008000FFFF018003FC03C7800FE0006F801F80003F803F00001F807E00000F80FC000
00781FC00000783F800000383F800000387F800000187F000000187F00000018FF000000
00FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000
FF000000007F000000007F000000187F800000183F800000183F800000181FC00000300F
C000003007E000006003F00000C001F800018000FE000700003FC01E00000FFFF8000000
FFC00025257DA42C>I<FFFFFFE00000FFFFFFFC000003F800FF000003F8001FC00003F8
0007E00003F80003F00003F80001F80003F80001FC0003F80000FC0003F80000FE0003F8
0000FE0003F800007F0003F800007F0003F800007F0003F800007F8003F800007F8003F8
00007F8003F800007F8003F800007F8003F800007F8003F800007F8003F800007F8003F8
00007F8003F800007F8003F800007F0003F800007F0003F800007F0003F80000FE0003F8
0000FE0003F80001FC0003F80001F80003F80003F00003F80007E00003F8001FC00003F8
00FF8000FFFFFFFE0000FFFFFFE0000029257EA42F>I<FFFFFFFF00FFFFFFFF0003F800
7F0003F8000F8003F800078003F800038003F800038003F800018003F800018003F80001
8003F80000C003F80600C003F80600C003F806000003F806000003F80E000003F81E0000
03FFFE000003FFFE000003F81E000003F80E000003F806000003F806000003F806006003
F806006003F800006003F80000C003F80000C003F80000C003F80000C003F80001C003F8
0003C003F80003C003F8000F8003F8003F80FFFFFFFF80FFFFFFFF8023257EA428>I<FF
FFFFFE00FFFFFFFE0003F800FE0003F8001F0003F8000F0003F800070003F800070003F8
00030003F800030003F800030003F800018003F803018003F803018003F803000003F803
000003F807000003F80F000003FFFF000003FFFF000003F80F000003F807000003F80300
0003F803000003F803000003F803000003F800000003F800000003F800000003F8000000
03F800000003F800000003F800000003F800000003F800000003F8000000FFFFF00000FF
FFF0000021257EA427>I<0000FF8010000FFFE030003FC078F000FE000DF001F80007F0
07F00003F00FE00001F00FC00000F01FC00000703F800000703F800000707F800000307F
000000307F00000030FF00000000FF00000000FF00000000FF00000000FF00000000FF00
000000FF00000000FF0003FFFFFF0003FFFF7F000007F07F000007F07F800007F03F8000
07F03F800007F01FC00007F00FC00007F00FE00007F007F00007F001F80007F000FE000F
F0003FC039F0000FFFF0700000FF803028257DA430>I<FFFFE0FFFFE0FFFFE0FFFFE003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003FFFFFFF80003FFFFFFF80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F800FFFFE0FFFFE0FFFFE0FFFFE02B257EA430>I<
FFFFF000FFFFF00003F8000003F8000003F8000003F8000003F8000003F8000003F80000
03F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F80000
03F8000003F8000003F8000003F8000003F8000003F8000303F8000303F8000303F80006
03F8000603F8000603F8000E03F8000E03F8001E03F8003E03F8007C03F803FCFFFFFFFC
FFFFFFFC20257EA425>76 D<FFF8000000FFF8FFFC000001FFF803FC000001FE00037E00
00037E00037E0000037E00037E0000037E00033F0000067E00033F0000067E00031F8000
0C7E00031F80000C7E00030FC000187E00030FC000187E000307E000307E000307E00030
7E000307E000307E000303F000607E000303F000607E000301F800C07E000301F800C07E
000300FC01807E000300FC01807E0003007E03007E0003007E03007E0003007E03007E00
03003F06007E0003003F06007E0003001F8C007E0003001F8C007E0003000FD8007E0003
000FD8007E00030007F0007E00030007F0007E00030007F0007E00030003E0007E000780
03E0007E00FFFC01C01FFFF8FFFC01C01FFFF835257EA43A>I<FFF80007FFE0FFFC0007
FFE003FE00003C0003FF00001800037F00001800033F80001800031FC0001800031FE000
1800030FF00018000307F80018000303F80018000301FC0018000300FE0018000300FF00
180003007F80180003003FC0180003001FC0180003000FE0180003000FF01800030007F8
1800030003FC1800030001FC1800030000FE18000300007F18000300007F98000300003F
D8000300001FF8000300000FF80003000007F80003000003F80003000003F80003000001
F80003000000F800030000007800078000003800FFFC00001800FFFC000018002B257EA4
30>I<0003FF8000001FFFF000007F01FC0001FC007F0003F0001F8007E0000FC00FE000
0FE01FC00007F01F800003F03F800003F83F800003F87F800003FC7F000001FC7F000001
FCFF000001FEFF000001FEFF000001FEFF000001FEFF000001FEFF000001FEFF000001FE
FF000001FEFF000001FE7F000001FC7F000001FC7F800003FC3F800003F83F800003F81F
C00007F01FC00007F00FE0000FE007F0001FC003F8003F8001FC007F00007F01FC00001F
FFF0000003FF800027257DA42E>I<FFFFFFE000FFFFFFFC0003F800FF0003F8003F8003
F8001FC003F8001FE003F8000FE003F8000FF003F8000FF003F8000FF003F8000FF003F8
000FF003F8000FF003F8000FE003F8001FE003F8001FC003F8003F8003F800FF0003FFFF
FC0003FFFFE00003F800000003F800000003F800000003F800000003F800000003F80000
0003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
03F800000003F8000000FFFFE00000FFFFE0000024257EA42A>I<FFFFFF800000FFFFFF
F8000003F801FE000003F8007F000003F8003F800003F8001FC00003F8001FC00003F800
1FE00003F8001FE00003F8001FE00003F8001FE00003F8001FE00003F8001FC00003F800
1FC00003F8003F800003F8007F000003F801FE000003FFFFF8000003FFFFC0000003F803
F0000003F801F8000003F800FC000003F8007E000003F8007E000003F8007F000003F800
7F000003F8007F000003F8007F000003F8007F800003F8007F800003F8007F800003F800
7F806003F8003FC06003F8003FC0C003F8001FE1C0FFFFE00FFF80FFFFE001FE002B257E
A42E>82 D<00FF008007FFE3800F80F7801E001F803C000F807800078078000380F80003
80F8000180F8000180FC000180FC000000FF0000007FE000007FFE00003FFFE0003FFFF8
001FFFFE0007FFFF0003FFFF80007FFF800003FFC000003FC000000FE0000007E0000007
E0C00003E0C00003E0C00003E0C00003C0E00003C0F00007C0F8000780FC000F00FFC03E
00E3FFF800803FE0001B257DA422>I<7FFFFFFFF87FFFFFFFF87E00FE01F87800FE0078
7000FE00386000FE00186000FE0018E000FE001CE000FE000CC000FE000CC000FE000CC0
00FE000CC000FE000C0000FE00000000FE00000000FE00000000FE00000000FE00000000
FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE
00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
000000FE000000FFFFFE0000FFFFFE0026247EA32B>I<FFFF8001FFE0FFFF8001FFE007
F800001C0003F80000180003F80000180003FC0000380001FC0000300001FE0000700000
FE0000600000FF00006000007F0000C000007F8000C000003F80018000003F8001800000
3FC0038000001FC0030000001FE0070000000FE0060000000FF00600000007F00C000000
07F00C00000003F81800000003F81800000003FC3800000001FC3000000001FE70000000
00FE6000000000FF60000000007FC0000000007FC0000000003F80000000003F80000000
003F80000000001F00000000001F00000000000E00000000000E0000002B257FA42E>86
D<FFFF81FFFE01FFF0FFFF81FFFE01FFF007F0001FC0000F0007F0001FE000060003F800
0FE0000C0003F8000FE0000C0003F80007F0000C0001FC0007F000180001FC0007F00018
0001FE000FF800380000FE000FF800300000FE001FFC003000007F0019FC006000007F00
19FC006000007F8030FE006000003F8030FE00C000003F8030FF00C000003FC0607F01C0
00001FC0607F018000001FC0E07F818000000FE0C03F830000000FE0C03F830000000FF1
801FC300000007F1801FC600000007F1801FE600000007FB000FEE00000003FB000FEC00
000003FF000FFC00000001FE0007F800000001FE0007F800000001FC0003F800000000FC
0003F000000000FC0003F000000000F80001F000000000780001E000000000780001E000
000000300000C000003C257FA43F>I<07FF00001FFFE0003E03F0003F00F8003F00FC00
3F007E001E007E0000007E0000007E0000007E00001FFE0003FE7E000FC07E001F007E00
3E007E007E007E00FC007E00FC007E00FC007E00FC00BE007E01BE003F073E001FFE1FE0
07F00FE01B187E971E>97 D<FFC00000FFC000000FC000000FC000000FC000000FC00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC1FC00
0FCFFF000FFC0FC00FF007E00FC003F00FC003F00FC001F80FC001F80FC001FC0FC001FC
0FC001FC0FC001FC0FC001FC0FC001FC0FC001FC0FC001FC0FC001F80FC001F80FC003F0
0FE003F00FF007E00F1C1F800E0FFF000C03F8001E267FA522>I<007FE003FFF807C07C
1F80FC1F00FC3F00FC7E00787E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
FE00007E00007F00003F000C1F800C1FC01807E07003FFE0007F0016187E971B>I<0000
FFC00000FFC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
0FC000000FC000000FC000000FC000000FC0007F0FC003FFCFC00FE0FFC01F803FC03F00
0FC03F000FC07E000FC07E000FC0FE000FC0FE000FC0FE000FC0FE000FC0FE000FC0FE00
0FC0FE000FC0FE000FC07E000FC07E000FC03F000FC03F001FC01F803FC00FC0EFC003FF
CFFC00FE0FFC1E267EA522>I<007F0003FFC007C1F00F80F81F00F83F007C7E007C7E00
7EFE007EFE007EFFFFFEFFFFFEFE0000FE0000FE00007E00007E00007E00063F00061F00
0C0F801807E07003FFE0007F8017187E971C>I<001FC0007FF001F8F003E1F807E1F807
C1F80FC0F00FC0000FC0000FC0000FC0000FC0000FC0000FC000FFFF00FFFF000FC0000F
C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F
C0000FC0000FC0000FC0000FC0000FC0000FC000FFFE00FFFE0015267EA513>I<01FF07
C007FFDFE00F83F1E01F01F1E03E00F8007E00FC007E00FC007E00FC007E00FC007E00FC
007E00FC003E00F8001F01F0000F83E0000FFFC00011FF00003000000030000000380000
003C0000003FFFE0001FFFFC001FFFFE000FFFFF001FFFFF803C003F8078000FC0F80007
C0F80007C0F80007C0F80007C07C000F803E001F001F807E0007FFF80000FFC0001B247E
971F>I<FFC00000FFC000000FC000000FC000000FC000000FC000000FC000000FC00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC0FE000FC3FF800FCE0FC0
0FD80FC00FD007E00FE007E00FE007E00FC007E00FC007E00FC007E00FC007E00FC007E0
0FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E0
0FC007E0FFFC7FFEFFFC7FFE1F267EA522>I<0F001F803FC03FC03FC03FC01F800F0000
000000000000000000000000007FC07FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFF8FFF80D277EA611>I<FFC00000
FFC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
0FC000000FC000000FC000000FC000000FC01FF00FC01FF00FC007800FC00E000FC01C00
0FC030000FC060000FC1C0000FC380000FC780000FDF80000FFFC0000FE7E0000FC3F000
0F81F0000F81F8000F80FC000F807E000F803F000F803F000F801F800F800FC0FFF83FF8
FFF83FF81D267FA520>107 D<FFC0FFC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
C00FC00FC00FC00FC00FC00FC0FFFCFFFC0E267EA511>I<FF80FE007F00FF83FF81FFC0
0F8E0FC707E00F980FCC07E00F9007E803F00FA007F003F00FA007F003F00FC007E003F0
0FC007E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F0
0FC007E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F0
0FC007E003F00FC007E003F0FFFC7FFE3FFFFFFC7FFE3FFF30187E9733>I<FF80FE00FF
83FF800F8E0FC00F980FC00F9007E00FA007E00FA007E00FC007E00FC007E00FC007E00F
C007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00F
C007E00FC007E00FC007E0FFFC7FFEFFFC7FFE1F187E9722>I<007F800003FFF00007C0
F8001F807E003F003F003F003F007E001F807E001F80FE001FC0FE001FC0FE001FC0FE00
1FC0FE001FC0FE001FC0FE001FC0FE001FC07E001F807E001F803F003F003F003F001F80
7E000FC0FC0003FFF000007F80001A187E971F>I<FFC1FC00FFCFFF000FFC1FC00FF007
E00FC007F00FC003F00FC003F80FC001F80FC001FC0FC001FC0FC001FC0FC001FC0FC001
FC0FC001FC0FC001FC0FC001FC0FC003F80FC003F80FC003F00FE007F00FF00FE00FDC1F
800FCFFF000FC3F8000FC000000FC000000FC000000FC000000FC000000FC000000FC000
000FC000000FC00000FFFC0000FFFC00001E237F9722>I<FF83E0FF8FF80F8C7C0F90FC
0FB0FC0FA0FC0FA0780FE0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
0FC0000FC0000FC0000FC0000FC0000FC000FFFE00FFFE0016187F9719>114
D<07F8C01FFFC03C07C07001C0F000C0F000C0F000C0FC0000FF80007FFC007FFE003FFF
800FFFC003FFC0001FE00003E0C001E0C001E0E001E0E001C0F003C0FC0780EFFF00C3FC
0013187E9718>I<00C00000C00000C00000C00001C00001C00001C00003C00007C0000F
C0001FC000FFFFC0FFFFC00FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F
C0000FC0000FC0000FC0000FC0600FC0600FC0600FC0600FC0600FC06007E0C007E1C001
FF80007E0013237FA218>I<FFC07FE0FFC07FE00FC007E00FC007E00FC007E00FC007E0
0FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E0
0FC007E00FC007E00FC007E00FC00FE00FC00FE007C017E007E067E003FFC7FE007F07FE
1F187E9722>I<FFF80FF8FFF80FF80FC001C00FC0018007E0030007E0030007F0070003
F0060003F80E0001F80C0001FC0C0000FC180000FE1800007E3000007E3000003F600000
3F6000003FE000001FC000001FC000000F8000000F800000070000000700001D187F9720
>I<FFF9FFE0FF80FFF9FFE0FF801FC03F001C000FC01F0018000FC01F80180007E01F80
300007E01F80300007F03FC0700003F037C0600003F037E0600001F863E0C00001F863E0
C00001FCE3F1C00000FCC1F1800000FCC1F98000007F80FB0000007F80FB0000007F80FF
0000003F007E0000003F007E0000001E003C0000001E003C0000001E003C0000000C0018
000029187F972C>I<FFF83FF0FFF83FF00FC00F0007E00E0003F01C0003F8380001FC70
0000FC6000007EC000003F8000003F8000001F8000000FC000001FE000001FF0000033F8
000061F80000E0FC0001C07E0003807F0007003F800F001F80FFC07FF8FFC07FF81D187F
9720>I<FFF80FF8FFF80FF80FC001C00FC0018007E0030007E0030007F0070003F00600
03F80E0001F80C0001FC0C0000FC180000FE1800007E3000007E3000003F6000003F6000
003FE000001FC000001FC000000F8000000F800000070000000700000006000000060000
000C0000300C0000781C0000FC180000FC300000FC70000068E000007FC000001F000000
1D237F9720>I<7FFFF87FFFF87C03F07007F0600FE0E00FC0E01F80C03F80C03F00C07E
0000FE0000FC0001F80003F80C03F00C07E00C0FE00C0FC01C1F80183F80387F00787E01
F8FFFFF8FFFFF816187E971B>I E /Fk 90 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F870000000000070F8F8F870051C779B18>33 D<4010E038F078E038E038E038E038
E038E038E038E038E038E03860300D0E7B9C18>I<030600078F00078F00078F00078F00
078F00078F007FFFC0FFFFE0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E00
7FFFC0FFFFE0FFFFE07FFFC01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E
9B18>I<00C00001C00001C00001C00003F0000FFC003FFE007DCF0071C700E1C380E1C7
80E1C780E1C780F1C00079C0003FC0001FE0000FF80001FC0001DE0001CF0001C70061C3
80F1C380F1C380E1C380E1C70071C70079DE003FFE001FF80007E00001C00001C00001C0
0000C00011247D9F18>I<3803007C07807C0780EE0F80EE0F00EE0F00EE1F00EE1E00EE
1E00EE3E007C3C007C3C00387C0000780000780000F80000F00001F00001E00001E00003
E00003C00003C00007C0000783800787C00F87C00F0EE00F0EE01F0EE01E0EE01E0EE03E
0EE03C07C03C07C018038013247E9F18>I<01C00007E0000FF0000E70001C38001C3800
1C38001C38001C73F81CF3F81CE3F80FC1C00FC3800F83800F03801F07003F87007B8E00
71CE00E1FC00E0FC00E07C00E07870E0787070FE707FFFE03FC7E00F03C0151C7F9B18>
I<387C7C7E3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E003C007800F001E00
1C00380038007000700070007000E000E000E000E000E000E000E000E000700070007000
7000380038001C001E000F00078003C001F000F000700C24799F18>I<6000F00078003C
001E000F000780038001C001C000E000E000E000E0007000700070007000700070007000
7000E000E000E000E001C001C0038007800F001E003C007800F00060000C247C9F18>I<
01C00001C00001C00001C00041C100F1C780FDDF807FFF001FFC0007F00007F0001FFC00
7FFF00FDDF80F1C78041C10001C00001C00001C00001C00011147D9718>I<00600000F0
0000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F0
0000F00000F00000F00000F00000F00000600013147E9718>I<1C3E7E7F3F1F070E1E7C
F860080C788518>I<7FFFC0FFFFE0FFFFE07FFFC013047E8F18>I<3078FCFC7830060677
8518>I<000300000780000780000F80000F00001F00001E00001E00003E00003C00007C
0000780000780000F80000F00001F00001E00003E00003C00003C00007C0000780000F80
000F00000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F000
0060000011247D9F18>I<01F00007FC000FFE001F1F001C07003803807803C07001C070
01C0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C070
01C07803C03803801C07001F1F000FFE0007FC0001F000131C7E9B18>I<018003800380
07800F803F80FF80FB804380038003800380038003800380038003800380038003800380
03800380038003807FFCFFFE7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0
E001C0F000E0F000E06000E00000E00000E00001C00001C00003C0000780000F00001E00
003C0000780000F00001E00007C0000F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E
9B18>I<07F8001FFE003FFF007807807803C07801C03001C00001C0000380000380000F
0003FF0003FE0003FF000007800003C00001C00000E00000E00000E0F000E0F000E0F001
C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<001F00003F0000770000770000
E70001E70001C7000387000787000707000E07001E07003C0700380700780700F00700FF
FFF8FFFFF8FFFFF8000700000700000700000700000700000700007FF0007FF0007FF015
1C7F9B18>I<3FFF803FFF803FFF80380000380000380000380000380000380000380000
3800003BF8003FFE003FFF003C07803003C00001C00000E00000E06000E0F000E0F000E0
E001C07003C07C0F803FFF001FFC0003F000131C7E9B18>I<007E0001FF0007FF800F83
C01E03C01C03C0380180380000700000700000E1F800E7FE00FFFF00FE0780F803C0F001
C0F000E0E000E0F000E07000E07000E07000E03801C03C03C01E07800FFF0007FE0001F8
00131C7E9B18>I<E00000FFFFE0FFFFE0FFFFC0E00380E00700000F00001E00001C0000
380000380000700000F00000E00000E00001C00001C00001C00003800003800003800003
8000070000070000070000070000070000070000070000131D7E9C18>I<03F8000FFE00
1FFF003E0F803803807001C07001C07001C07001C03803803C07801FFF0007FC000FFE00
1F1F003C07807001C0F001E0E000E0E000E0E000E0E000E07001C07803C03E0F801FFF00
0FFE0003F800131C7E9B18>I<03F0000FFC001FFE003C0F00780780700380E001C0E001
C0E001C0E001E0E001E07001E07803E03C0FE01FFFE00FFEE003F0E00000E00001C00001
C00001C0300380780780780F00783E003FFC001FF00007C000131C7E9B18>I<3078FCFC
783000000000000000003078FCFC78300614779318>I<183C7E7E3C1800000000000000
00183C7E7E3E1E0E1C3C78F060071A789318>I<0000C00003E00007E0001FC0003F8000
FE0001FC0007F0000FE0003F80007F0000FC0000FC00007F00003F80000FE00007F00001
FC0000FE00003F80001FC00007E00003E00000C013187E9918>I<7FFFC0FFFFE0FFFFE0
FFFFE0000000000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<6000
00F80000FC00007F00003F80000FE00007F00001FC0000FE00003F80001FC00007E00007
E0001FC0003F8000FE0001FC0007F0000FE0003F80007F0000FC0000F800006000001318
7E9918>I<007C0001FE0007FF000F87801E03C03C1DC0387FC070FFE071E3E071C1E0E1
C1E0E380E0E380E0E380E0E380E0E380E0E380E0E1C1C071C1C071E3C070FF80387F003C
1C001E00E00F83E007FFC001FF80007E00131C7E9B18>64 D<00700000F80000F80000D8
0000D80001DC0001DC0001DC00018C00038E00038E00038E00038E000707000707000707
000707000707000FFF800FFF800FFF800E03801C01C01C01C01C01C07F07F0FF07F87F07
F0151C7F9B18>I<7FFC00FFFF007FFF801C03C01C01C01C00E01C00E01C00E01C00E01C
01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C
00701C00F01C00E01C03E07FFFC0FFFF807FFE00141C7F9B18>I<00F8E003FEE007FFE0
0F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E00000E00000
E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE00
00F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00
E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00
E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FF
FFF01C00701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001F
FE001C0E001C0E001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FF
FFF8FFFFF8151C7F9B18>I<FFFFF8FFFFF8FFFFF81C00381C00381C00381C00381C0000
1C00001C07001C07001C07001FFF001FFF001FFF001C07001C07001C07001C00001C0000
1C00001C00001C00001C00001C0000FFC000FFC000FFC000151C7F9B18>I<01F1C003FD
C00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E00000E00000E000
00E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC00FFF
C003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C
01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C
01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00
FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
7FFF00FFFF807FFF00111C7D9B18>I<01FFC001FFC001FFC0000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
00000E00000E00000E00F00E00F00E00F03C007FFC003FF0000FC000121C7D9B18>I<7F
07F0FF87F87F07F01C03C01C07801C07001C0E001C1E001C3C001C38001C70001CF0001D
F0001DF0001FB8001FB8001F1C001E1C001C0E001C0E001C07001C07001C03801C03801C
01C07F03F0FF87F87F03F0151C7F9B18>I<FFC000FFC000FFC0001C00001C00001C0000
1C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001C00001C00E01C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE0131C7E9B18>
I<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B8EE03B8EE0398CE0398CE039DC
E039DCE039DCE038D8E038D8E038F8E03870E03870E03800E03800E03800E03800E03800
E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D81C01D81C01D
81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39C01C
39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B
18>I<0FFE003FFF807FFFC07803C07001C0F001E0E000E0E000E0E000E0E000E0E000E0
E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E0
7001C07C07C07FFFC03FFF800FFE00131C7E9B18>I<FFFE00FFFF80FFFFC01C03C01C01
E01C00E01C00701C00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE
001C00001C00001C00001C00001C00001C00001C00001C0000FF8000FF8000FF8000141C
7F9B18>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C
03801C0F801FFF001FFE001FFE001C0F001C07001C03801C03801C03801C03801C03801C
039C1C039C1C039C7F01F8FF81F87F00F0161C7F9B18>82 D<03F1C01FFFC03FFFC07C0F
C07003C0E001C0E001C0E001C0E000007000007800003F00001FF00007FE0000FF00000F
800003C00001C00000E00000E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F8
00131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E0703800700000700000
700000700000700000700000700000700000700000700000700000700000700000700000
700000700000700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE
1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070
1C00701C00701C00701C00701C00701C00701C00700E00E00F01E00783C003FF8001FF00
007C00171C809B18>I<FE03F8FF07F8FE03F83C01E01C01C01C01C01C01C01E03C00E03
800E03800E03800E0380070700070700070700070700038E00038E00038E00038E00018C
0001DC0001DC0001DC0000D80000F80000F800007000151C7F9B18>I<FE03F8FE03F8FE
03F87000707000707000703800E03800E03800E03800E03800E038F8E039FCE039DCE039
DCE019DCC019DCC019DCC0198CC0198CC01D8DC01D8DC01D8DC01D05C00D05800F07800F
07800E0380151C7F9B18>I<7F0FE07F9FE07F0FE00E07000F0700070E00078E00039C00
03DC0001F80001F80000F80000F00000700000F00000F80001FC0001DC00039E00038E00
070F000707000E07800E03801E03C07F07F0FF07F87F07F0151C7F9B18>I<FE03F8FF07
F8FE03F81C01C01E03C00E03800F0780070700070700038E00038E0001DC0001DC0001DC
0000F80000F80000700000700000700000700000700000700000700000700000700001FC
0003FE0001FC00151C7F9B18>I<FFF8FFF8FFF8E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000FFF8FFF8FFF80D24779F18>91 D<600000F00000F00000F800007800
007C00003C00003C00003E00001E00001F00000F00000F00000F800007800007C00003C0
0003C00003E00001E00001F00000F00000F800007800007800007C00003C00003E00001E
00001E00001F00000F00000F8000078000078000030011247D9F18>I<FFF8FFF8FFF800
380038003800380038003800380038003800380038003800380038003800380038003800
3800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F9F18>I<
018007C01FF07EFCF83EE00E0F067C9B18>I<7FFFC0FFFFE0FFFFE07FFFC013047E7F18>
I<061E3E387070E0E0E0F8FC7C7C38070E789E18>I<0FF0001FFC003FFE003C0F001807
0000038000038000FF8007FF801FFF807F0380780380E00380E00380E00380F00780780F
803FFFF81FFDF807F0F815147E9318>I<7E0000FE00007E00000E00000E00000E00000E
00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E
00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<
01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E00000
E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80003F
80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F807007
80700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF
F00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380E0
01C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E07C01FFF8007FF0001
F80012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007FFFC0
FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFF
F81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0
003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800
F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E
00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC7FCFFE7FE7FC7FC171C809B
18>I<038007C007C007C0038000000000000000007FC0FFC07FC001C001C001C001C001
C001C001C001C001C001C001C001C001C001C0FFFFFFFFFFFF101D7C9C18>I<0038007C
007C007C003800000000000000000FFC0FFC0FFC001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C6038F078FFF07FE0
3F800E277E9C18>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3FF0
0E3FF00E3FF00E07800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E00
0E0F000E07000E03800E03C07FC7F8FFC7F87FC7F8151C7F9B18>I<FFC000FFC000FFC0
0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF
80FFFF80111C7D9B18>I<F9C1C0FFF7F0FFFFF03E3E383C3C383C3C3838383838383838
3838383838383838383838383838383838383838383838383838FE3E3EFE7E7EFE3E3E17
14809318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC7FCFFE7FE7FC7FC1714809318>
I<01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000
E0F001E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FE
FF807FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F
00700F00700F80E00FC1E00FFFC00EFF800E3E000E00000E00000E00000E00000E00000E
00000E00007FC000FFE0007FC000151E809318>I<01F38007FB801FFF803E1F80380F80
700780700780E00380E00380E00380E00380E00380E00380700780700780380F803C1F80
1FFF800FFB8003E380000380000380000380000380000380000380000380001FF0003FF8
001FF0151E7E9318>I<FF0FC0FF3FE0FF7FF007F0F007E06007C0000780000780000700
00070000070000070000070000070000070000070000070000FFFC00FFFE00FFFC001414
7E9318>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC0003
FE00001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<
0180000380000380000380000380007FFFC0FFFFC0FFFFC0038000038000038000038000
0380000380000380000380000380000380400380E00380E00380E001C1C001FFC000FF80
003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00
E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714
809318>I<7F8FF0FF8FF87F8FF01C01C00E03800E03800E038007070007070007070007
8F00038E00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318>I<
FF07F8FF8FF8FF07F83800E03800E03800E03800E01C01C01C71C01CF9C01CF9C01CD9C0
1DDDC00DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<7F8FF07F9F
F07F8FF00F0700078E00039E0001DC0001F80000F80000700000F00000F80001DC00039E
00038E000707000E07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E
01C00E03800E0380070380070700070700038700038700038E0001CE0001CE0001CC0000
CC0000DC0000780000780000780000700000700000700000F00000E00079E0007BC0007F
80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C0700780000F00
001E00003C0000F80001F00003C0000780000F00701E00703C0070780070FFFFF0FFFFF0
FFFFF014147F9318>I<0007E0001FE0007FE000780000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00001E0007FC000FF8000FF80007FC00001E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000078
00007FE0001FE00007E013247E9F18>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600424769F18>I<7C0000FF0000FFC00003C000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000F000
007FC0003FE0003FE0007FC000F00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000E00000E00003C000FFC000FF00007C000013247E9F18>I
E /Fl 45 123 df<0003E0001C1800381800703C00E03C00E03801C00001C00001C00001
C00001C0000380007FFFF00380700380700380700380700700E00700E00700E00700E007
00E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF0FF016207E9F
19>12 D<0003F4001C1C00383C00703C00E03C00E03801C03801C03801C03801C03801C0
380380707FFFF00380700380700380700380700700E00700E00700E00700E00700E00700
E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF9FF016207E9F19>I<38
7C7C7E3A040404080810204080070E789F0D>39 D<FFF0FFF00C027E8A0F>45
D<3078F8787005057C840D>I<00000100000300000300000600000600000C00000C0000
180000300000300000600000600000C00000C00001800001800003000003000006000006
00000C0000180000180000300000300000600000600000C00000C0000180000180000300
000300000600000C00000C0000180000180000300000300000600000600000C00000C000
00800000182D7FA117>I<007E0001C3000301800701C00E00C00E00E01C00E01C00E03C
01E03801E07801E07801E07801E07801E07801E0F003C0F003C0F003C0F003C0F003C0F0
0380F00780E00780E00700E00700E00E00600E00701C003038003870000FC000131F7C9D
17>I<0018003801F80E700070007000700070007000E000E000E000E000E000E001C001
C001C001C001C001C003800380038003800380038007000780FFFC0E1E7B9D17>I<003F
8000C1E00100700200780400780400780F007C0F807C0F807C0F00780600780000F80000
F00001E00001C0000380000700000E00001C0000380000600000C0000180000300200600
200800401000403FFFC07FFF80FFFF80161E7E9D17>I<001F8000704000C0200180E003
01E00701E00E00C01E00001C00003C000038000078F800790E007A07007C0300F80380F8
0380F003C0F003C0F003C0F003C0F00780E00780E00780E00700E00F00600E00701C0030
180018700007C000131F7C9D17>54 D<0000080000000C0000001C0000003C0000003C00
00007C0000007E0000009E0000009E0000011E0000011E0000021E0000020F0000040F00
00040F0000080F0000080F0000100F80001007800020078000200780007FFF80004007C0
008003C0008003C0010003C0010003C0020003C0020001E0060001E01F0003E0FF801FFE
1F207F9F22>65 D<07FFFF0000F803C0007801E0007800F000F000F800F000F800F000F8
00F000F800F000F800F000F001E001F001E003E001E003C001E00F8001FFFE0001E00F80
03C003C003C001E003C001F003C001F003C000F003C000F0078000F0078001F0078001F0
078001E0078003E0078007C00F000F800F003E00FFFFF0001D1F7E9E20>I<0000FE0200
070186001C004E0070003E00E0001E01C0001C0380000C0780000C0F00000C1F00000C1E
00000C3E0000083C0000007C0000007C0000007C0000007C000000F8000000F8000000F8
000000F8000000780000007800001078000020780000203C0000203C0000401C0000800E
0001000700020003800C0000E03000003FC0001F217C9F21>I<07FFFFF800F800780078
00380078001800F0001800F0000800F0000800F0000800F0000800F0000801E0080001E0
080001E0080001E0180001E0380001FFF80003C0300003C0100003C0100003C0100003C0
100003C000000780000007800000078000000780000007800000078000000F0000000F80
0000FFFC00001D1F7E9E1E>70 D<0000FE0200070186001C004E0070003E00E0001E01C0
001C0380000C0780000C0F00000C1F00000C1E00000C3E0000083C0000007C0000007C00
00007C0000007C000000F8000000F8000000F8003FFEF80001F0780000F0780000F07800
01E0780001E03C0001E03C0001E01C0001E00E0003E0070005C0038008C000E03040003F
C0001F217C9F24>I<07FF8000F80000780000780000F00000F00000F00000F00000F000
00F00001E00001E00001E00001E00001E00001E00003C00003C00003C00003C00003C000
03C0000780000780000780000780000780000780000F00000F8000FFF000111F7E9E10>
73 D<07FFE00000FC0000007800000078000000F0000000F0000000F0000000F0000000
F0000000F0000001E0000001E0000001E0000001E0000001E0000001E0000003C0000003
C0000003C0000003C0000003C0008003C001000780010007800100078003000780020007
80060007800E000F001E000F007C00FFFFFC00191F7E9E1C>76 D<07F8007FC0007C001F
00007C000C00005E000400009E000800008F000800008F00080000878008000087800800
0083C008000103C010000101E010000101E010000100F010000100F01000010078100002
0078200002003C200002003C200002001E200002001E200002000F200004000F40000400
07C000040007C000040003C000040003C000040001C0000C000180001E00008000FF8000
8000221F7E9E22>78 D<0001FC00000E0700003801C0007000E001E000F003C000780780
00780780003C0F00003C1F00003C1E00003E3E00003E3C00003E7C00003E7C00003E7C00
003E7C00003EF800007CF800007CF800007CF8000078F80000F8780000F8780001F07C00
01E07C0003E03C0003C01C0007801E000F000F001E000780380001C0E000007F80001F21
7C9F23>I<001F8200706600C01E01800E03000E07000C0600040E00040E00040E00040F
00000F00000F800007F00007FF0003FFC001FFE0003FF00003F80000F800007800003C00
003C400038400038400038400030600070600060F000C0E80180C6030081FC0017217E9F
19>83 D<3FFFFFF03C0780F03007803060078030400F0010400F0010C00F0010800F0010
800F0010800F0010001E0000001E0000001E0000001E0000001E0000001E0000003C0000
003C0000003C0000003C0000003C0000003C000000780000007800000078000000780000
007800000078000000F0000000F800003FFFE0001C1F7A9E21>I<07F8000C0C001E0600
1E07001C070000070000070000070000FF0007C7001E07003C0E00780E00F00E10F00E10
F00E10F01E10F02E20784F401F878014147D9317>97 D<0700003F00000F000007000007
00000E00000E00000E00000E00000E00000E00001C00001C7C001D83001E01801C01C01C
00E03800E03800F03800F03800F03800F03800F07001E07001E07001C07003C070038070
0700E80E00CC380083E00014207B9F19>I<00FE000383000E07801C0780380700380000
780000F00000F00000F00000F00000E00000E00000E00000F00000F00100700200380400
1C180007E00011147D9314>I<0000380001F80000780000380000380000700000700000
700000700000700000700000E000FCE00382E00601E01C01E03C00E03801C07801C0F001
C0F001C0F001C0F001C0E00380E00380E00380E00380F00380700780380F001C378007C7
E015207D9F19>I<00F800070E000E07001C0700380380780380700380F00380F00380FF
FF80F00000E00000E00000E00000E00000F001007002003004001C180007E00011147D93
14>I<0007C0001C600030F00060F000E0E000C00001C00001C00001C00001C00001C000
0380003FFC00038000038000038000038000070000070000070000070000070000070000
0E00000E00000E00000E00000E00000E00001C00001E0000FFC00014207F9F0E>I<0000
0E003E1100E1A301C1C20381E00780E00701E00F01E00F01E00F01E00703C00703800787
0004FC000800000800001800001C00000FFF000FFFC00FFFE01800F0300030600030C000
30C00030C000306000603000C01C070007FC00181F809417>I<00E00007E00001E00000
E00000E00001C00001C00001C00001C00001C00001C000038000038F800390E003A0E003
C0600380600780E00700E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E
01C00E01C01C03801E03C0FF8FF014207E9F19>I<01C003E003E003C001800000000000
0000000000000003801F800780038003800700070007000700070007000E000E000E000E
000E000E001C001E00FF800B1F7F9E0C>I<00E00007E00001E00000E00000E00001C000
01C00001C00001C00001C00001C0000380000381FC0380F00380C0038180038100070400
070800071800073800077C00071C000E1C000E0E000E0E000E0F000E07000E07801C0380
1E07C0FF8FF016207E9F18>107 D<00E007E001E000E000E001C001C001C001C001C001
C00380038003800380038003800700070007000700070007000E000E000E000E000E000E
001C001E00FF800B207F9F0C>I<0387C07C001F9861860007A072070003C03403000380
3803000780780700070070070007007007000700700700070070070007007007000E00E0
0E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001E01E01E
00FFCFFCFFC022147E9326>I<038F801F90E007A0E003C0600380600780E00700E00700
E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF8F
F014147E9319>I<00FC000387000E01801C00C03800E03800E07000F0F000F0F000F0F0
00F0F000F0E001E0E001E0E001C0E003C0F00380700700380E001C1C0007E00014147D93
17>I<00E3E00007EC380000F01C0000E00E0000E00F0001C0070001C0078001C0078001
C0078001C0078001C0078003800F0003800F0003800E0003801E0003801C000380380007
4070000761C000071F00000700000007000000070000000E0000000E0000000E0000000E
0000001E000000FFC00000191D809319>I<038E001FB38007C78003C780038300078000
0700000700000700000700000700000E00000E00000E00000E00000E00000E00001C0000
1E0000FFC00011147E9312>114 D<01F9060708031803180138023C001F001FF007FC01
FE001F40074003400360036006F004C81887E010147F9312>I<00800100010001000300
07000F001E00FFF80E000E000E000E001C001C001C001C001C001C003800381038103810
38103820382018400F800D1C7C9B12>I<1C0380FC1F803C07801C03801C038038070038
0700380700380700380700380700700E00700E00700E00700E00701E00701E00703C0030
5E001F9F8011147B9319>I<FF83F81E00E01C00C01C00801E00800E01000E03000E0200
0E040007040007080007080007100003900003A00003E00003C000038000018000010000
15147C9318>I<FF9FE1FC3C0780701C0300601C0380601C0380401C0380800E0780800E
0D81000E0981000E19C2000E11C2000F21C4000720C4000740C8000740E8000780F00007
80F0000300E00003006000020040001E147C9321>I<1FF0FF03C07801C07001C04000E0
C000E180007300007600003C00003C00001C00002E00004E000087000107000203800403
800C01C03C03E0FE07FC18147F9318>I<0FF83F8001E00E0001C00C0001C0080001E008
0000E0100000E0300000E0200000E0400000704000007080000070800000710000003900
00003A0000003E0000003C00000038000000180000001000000010000000200000002000
000040000070C00000F0800000F1000000E600000078000000191D809318>I<0FFFE00E
01E00C01C0080380080700100E00101C0000380000700000700000E00001C00003808007
00800E00801C01001C0100380300700E00FFFE0013147F9314>I
E /Fm 49 122 df<FFFFF8FFFFF8FFFFF8FFFFF8FFFFF8FFFFF8FFFFF815077F921B>45
D<0001C0000003C000000FC000007FC0001FFFC000FFFFC000FFBFC000E03FC000003FC0
00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
00003FC000003FC000003FC000003FC000003FC000003FC000003FC0007FFFFFF07FFFFF
F07FFFFFF01C2E7AAD28>49 D<003FE00001FFFE0007FFFF800F80FFC01E003FE038001F
F07C000FF87E0007FCFF0007FCFF8007FEFF8007FEFF8003FEFF8003FE7F0003FE3E0007
FE000007FE000007FC000007FC00000FF800000FF800000FF000001FE000001FC000003F
8000007F0000007E000000F8000001F0000003E0000007C000000F0000001E000E003C00
0E0038000E0070001E00E0001C01C0001C0300003C07FFFFFC0FFFFFFC1FFFFFFC3FFFFF
FC7FFFFFF8FFFFFFF8FFFFFFF8FFFFFFF81F2E7CAD28>I<001FF8000000FFFF000003FF
FFC00007E01FF0000F0007F8001F8007FC003FC007FC003FC003FE003FC003FE003FC003
FE003FC003FE001F8003FE000F0007FE00000007FC00000007FC00000007F80000000FF0
0000001FE00000003F80000000FF0000003FF80000003FFF800000001FE00000000FF000
000007F800000003FC00000003FE00000001FF00000001FF00000001FF80000001FF8000
0001FF801C0001FF803E0001FF807F0001FF80FF8001FF80FF8001FF00FF8001FF00FF80
03FE007F0003FE007E0007FC003C0007F8001FC01FF0000FFFFFC00003FFFF0000003FF8
0000212E7DAD28>I<0000007000000000F000000001F000000003F000000007F0000000
0FF00000000FF00000001FF00000003FF000000077F0000000F7F0000000E7F0000001C7
F000000387F000000707F000000F07F000000E07F000001C07F000003807F000007007F0
0000F007F00000E007F00001C007F000038007F000070007F0000F0007F0000E0007F000
1C0007F000380007F000700007F000E00007F000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE000
000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF0000000
0FF00000000FF000000FFFFFE0000FFFFFE0000FFFFFE0232E7EAD28>I<0C0000300FC0
07F00FFFFFE00FFFFFC00FFFFF800FFFFF000FFFFE000FFFF8000FFFF0000FFF80000E00
00000E0000000E0000000E0000000E0000000E0000000E0000000E0000000E1FF0000EFF
FE000FE03F800F000FC00E0007E00C0007F0000007F8000003F8000003FC000003FC0000
03FE000003FE180003FE3E0003FE7F0003FEFF0003FEFF0003FEFF0003FCFF0003FCFE00
03FC780007F8780007F03C000FE01E001FC00FC07F8007FFFF0001FFFC00003FE0001F2E
7CAD28>I<0000FF00000007FFE000001FFFF000007F80F80000FE003C0001F8007C0003
F000FE0007F001FE000FE001FE000FE001FE001FC001FE003FC000FC003FC00078003FC0
0000007F800000007F800000007F80000000FF83FC0000FF8FFF8000FF9C0FC000FFB003
F000FFB001F800FFE001FC00FFC001FE00FFC000FE00FFC000FF00FFC000FF00FF8000FF
80FF8000FF80FF8000FF80FF8000FF807F8000FF807F8000FF807F8000FF807F8000FF80
3F8000FF003FC000FF001FC000FF001FC000FE000FC001FC0007E001FC0003F003F80001
FC0FE00000FFFFC000003FFF0000000FFC0000212E7DAD28>I<38000000003E00000000
3FFFFFFFC03FFFFFFFC03FFFFFFFC03FFFFFFF807FFFFFFF007FFFFFFE007FFFFFFC007F
FFFFF80078000038007000007000700000E000F00001C000E000038000E000070000E000
07000000000E000000001C00000000380000000078000000007000000000F000000001E0
00000001E000000003E000000003C000000007C000000007C00000000FC00000000FC000
00001FC00000001F800000001F800000003F800000003F800000003F800000003F800000
007F800000007F800000007F800000007F800000007F800000007F800000007F80000000
7F800000003F000000001E00000022307CAF28>I<000FFC0000007FFF800001FFFFE000
03F00FF00007C003F8000F8000FC001F0000FC001F00007E003F00007E003F00007E003F
00007E003F80007E003FC0007E003FF000FC003FFC00F8001FFE01F8001FFF81F0000FFF
E3C00007FFFF800003FFFE000001FFFF000000FFFFC000003FFFE00000FFFFF00003E3FF
F80007C1FFFC000F807FFE001F001FFF003E000FFF007E0003FF807E0000FF80FC00007F
80FC00003F80FC00001F80FC00001F80FC00001F80FC00001F00FE00001F007E00001F00
7E00003E003F00007C001FC000F8000FF007F00003FFFFE00000FFFF8000001FF8000021
2E7DAD28>I<000FF80000007FFF000001FFFF800003F80FC00007E007E0000FC003F000
1FC001F8003FC001FC007F8001FC007F8001FE007F8000FE00FF8000FF00FF8000FF00FF
8000FF00FF8000FF00FF8000FF80FF8000FF80FF8000FF80FF8000FF807F8001FF807F80
01FF803F8001FF803FC001FF801FC003FF800FC006FF8007E006FF8001F81CFF8000FFF8
FF80001FE0FF80000000FF00000000FF00000000FF00000000FF000F0001FE001F8001FE
003FC001FC003FC001FC003FC003F8003FC003F0003F8007E0001F000FC0001E001F8000
0F807F000007FFFE000001FFF80000007FC00000212E7DAD28>I<000000780000000000
0078000000000000FC000000000000FC000000000000FC000000000001FE000000000001
FE000000000003FF000000000003FF000000000007FF800000000007FF800000000007FF
80000000000FFFC0000000000E7FC0000000001E7FE0000000001C3FE0000000001C3FE0
00000000383FF000000000381FF000000000781FF800000000700FF800000000700FF800
000000E00FFC00000000E007FC00000001E007FE00000001C003FE00000001C003FE0000
00038001FF000000038001FF000000078001FF800000070000FF8000000F0000FFC00000
0FFFFFFFC000000FFFFFFFC000001FFFFFFFE000001C00003FE000003C00003FF0000038
00001FF000003800001FF000007000001FF800007000000FF80000F000000FFC0000E000
0007FC0000E0000007FC0001C0000007FE0003E0000003FE00FFFF0001FFFFFCFFFF0001
FFFFFCFFFF0001FFFFFC36317DB03D>65 D<FFFFFFFFC00000FFFFFFFFFC0000FFFFFFFF
FF000001FE0000FF800001FE00007FE00001FE00003FF00001FE00001FF00001FE00000F
F80001FE00000FF80001FE00000FFC0001FE000007FC0001FE000007FC0001FE000007FC
0001FE000007FC0001FE00000FFC0001FE00000FFC0001FE00000FF80001FE00000FF800
01FE00001FF00001FE00003FE00001FE00007FC00001FE0001FF800001FE001FFE000001
FFFFFFFC000001FFFFFFFF800001FE00003FE00001FE00000FF00001FE000007FC0001FE
000007FC0001FE000003FE0001FE000003FF0001FE000001FF0001FE000001FF8001FE00
0001FF8001FE000001FF8001FE000001FF8001FE000001FF8001FE000001FF8001FE0000
01FF8001FE000001FF0001FE000003FF0001FE000003FE0001FE000007FE0001FE00000F
FC0001FE00001FF80001FE0000FFF000FFFFFFFFFFC000FFFFFFFFFF0000FFFFFFFFF800
0031317DB039>I<000003FF80018000003FFFF003800001FFFFFC07800007FF003F0F80
001FF800079F80003FC00001FF8000FF800000FF8001FE0000007F8003FC0000003F8007
FC0000001F8007F80000000F800FF00000000F801FF000000007801FF000000007803FE0
00000007803FE000000003807FE000000003807FE000000003807FC000000000007FC000
00000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000
000000FFC00000000000FFC00000000000FFC00000000000FFC000000000007FC0000000
00007FC000000000007FE000000000007FE000000003803FE000000003803FE000000003
801FF000000003801FF000000007800FF0000000070007F8000000070007FC0000000E00
03FC0000001E0001FE0000001C0000FF8000007800003FC00000F000001FF80003E00000
07FF003F80000001FFFFFE000000003FFFF80000000003FF80000031317CB03A>I<FFFF
FFFFF00000FFFFFFFFFF0000FFFFFFFFFFC00000FF8000FFF00000FF80000FF80000FF80
0003FE0000FF800001FF0000FF800000FF8000FF8000007FC000FF8000003FC000FF8000
001FE000FF8000001FF000FF8000000FF000FF8000000FF800FF8000000FF800FF800000
07FC00FF80000007FC00FF80000007FC00FF80000007FC00FF80000007FE00FF80000007
FE00FF80000007FE00FF80000007FE00FF80000007FE00FF80000007FE00FF80000007FE
00FF80000007FE00FF80000007FE00FF80000007FE00FF80000007FE00FF80000007FC00
FF80000007FC00FF80000007FC00FF80000007FC00FF8000000FF800FF8000000FF800FF
8000000FF000FF8000001FF000FF8000001FE000FF8000003FE000FF8000007FC000FF80
00007F8000FF800001FF0000FF800003FE0000FF80000FFC0000FF80007FF000FFFFFFFF
FFC000FFFFFFFFFF0000FFFFFFFFF0000037317EB03E>I<FFFFFFFFFFF0FFFFFFFFFFF0
FFFFFFFFFFF000FF80003FF000FF800007F800FF800003F800FF800000F800FF800000F8
00FF8000007800FF8000007800FF8000003800FF8000003800FF8000003800FF8000001C
00FF8007001C00FF8007001C00FF8007001C00FF8007000000FF8007000000FF800F0000
00FF801F000000FF803F000000FFFFFF000000FFFFFF000000FFFFFF000000FF803F0000
00FF801F000000FF800F000000FF8007000000FF8007000000FF8007000700FF80070007
00FF8007000700FF8000000E00FF8000000E00FF8000000E00FF8000000E00FF8000001E
00FF8000001E00FF8000003C00FF8000003C00FF8000007C00FF800000FC00FF800001FC
00FF800007FC00FF80003FFCFFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF830317EB035>
I<FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE000FF80007FE000FF80000FF000FF800003
F000FF800001F000FF800001F000FF800000F000FF800000F000FF8000007000FF800000
7000FF8000007000FF8000003800FF8000003800FF8007003800FF8007003800FF800700
0000FF8007000000FF8007000000FF800F000000FF801F000000FF803F000000FFFFFF00
0000FFFFFF000000FFFFFF000000FF803F000000FF801F000000FF800F000000FF800700
0000FF8007000000FF8007000000FF8007000000FF8007000000FF8000000000FF800000
0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
0000FF8000000000FF8000000000FF8000000000FF80000000FFFFFFC00000FFFFFFC000
00FFFFFFC000002D317EB033>I<000003FF00030000007FFFF007000001FFFFFC0F0000
07FF007E1F00001FF0000FBF00007FC00003FF0000FF800001FF0001FE0000007F0003FC
0000007F0007FC0000003F000FF80000001F000FF00000001F001FF00000000F001FF000
00000F003FE000000007003FE000000007007FE000000007007FE000000007007FC00000
000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000000
0000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC000000000
00FFC00007FFFFF87FC00007FFFFF87FE00007FFFFF87FE0000001FF003FE0000001FF00
3FE0000001FF001FF0000001FF001FF0000001FF000FF0000001FF000FF8000001FF0007
FC000001FF0003FC000001FF0001FE000001FF0000FF800001FF00007FC00003FF00001F
F800077F000007FF003E3F000001FFFFFC1F0000007FFFF00F00000003FF80030035317C
B03F>I<FFFFFF807FFFFFC0FFFFFF807FFFFFC0FFFFFF807FFFFFC000FF8000007FC000
00FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000
007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC000
00FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000
007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC000
00FFFFFFFFFFC00000FFFFFFFFFFC00000FFFFFFFFFFC00000FF8000007FC00000FF8000
007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC000
00FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000
007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC000
00FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000
007FC00000FF8000007FC000FFFFFF807FFFFFC0FFFFFF807FFFFFC0FFFFFF807FFFFFC0
3A317EB03F>I<FFFFFF80FFFFFF80FFFFFF8000FF800000FF800000FF800000FF800000
FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000
FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000
FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000
FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000
FF800000FF800000FF8000FFFFFF80FFFFFF80FFFFFF8019317EB01E>I<FFFFFF800000
FFFFFF800000FFFFFF80000001FF0000000001FF0000000001FF0000000001FF00000000
01FF0000000001FF0000000001FF0000000001FF0000000001FF0000000001FF00000000
01FF0000000001FF0000000001FF0000000001FF0000000001FF0000000001FF00000000
01FF0000000001FF0000000001FF0000000001FF0000000001FF0000000001FF00000000
01FF0000000001FF0000000001FF0000000001FF0000000001FF0000000001FF00000380
01FF0000038001FF0000038001FF0000038001FF0000078001FF0000070001FF00000700
01FF00000F0001FF00000F0001FF00000F0001FF00001F0001FF00003F0001FF00007F00
01FF0000FF0001FF0001FE0001FF000FFE00FFFFFFFFFE00FFFFFFFFFE00FFFFFFFFFE00
29317DB030>76 D<FFFF800001FFFFC0FFFFC00001FFFFC0FFFFE00001FFFFC000FFF000
0003E00000FFF8000001C00000EFFC000001C00000E7FC000001C00000E7FE000001C000
00E3FF000001C00000E1FF800001C00000E0FFC00001C00000E07FE00001C00000E03FE0
0001C00000E03FF00001C00000E01FF80001C00000E00FFC0001C00000E007FE0001C000
00E003FE0001C00000E001FF0001C00000E001FF8001C00000E000FFC001C00000E0007F
E001C00000E0003FF001C00000E0001FF001C00000E0001FF801C00000E0000FFC01C000
00E00007FE01C00000E00003FF01C00000E00001FF81C00000E00000FF81C00000E00000
FFC1C00000E000007FE1C00000E000003FF1C00000E000001FF9C00000E000000FFDC000
00E0000007FDC00000E0000007FFC00000E0000003FFC00000E0000001FFC00000E00000
00FFC00000E00000007FC00000E00000003FC00000E00000003FC00000E00000001FC000
00E00000000FC00001F000000007C000FFFFE0000003C000FFFFE0000001C000FFFFE000
0001C0003A317EB03F>78 D<FFFFFFFFE000FFFFFFFFFE00FFFFFFFFFF8000FF8000FFE0
00FF80003FF000FF80000FF800FF800007FC00FF800007FC00FF800003FE00FF800003FE
00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF800003FF
00FF800003FF00FF800003FE00FF800003FE00FF800007FC00FF800007F800FF80000FF8
00FF80003FE000FF8000FFC000FFFFFFFF0000FFFFFFF80000FF8000000000FF80000000
00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
FFFFFF800000FFFFFF800000FFFFFF80000030317EB037>80 D<FFFFFFFF80000000FFFF
FFFFF8000000FFFFFFFFFE00000000FF8003FF80000000FF80007FE0000000FF80001FF0
000000FF80000FF8000000FF80000FF8000000FF80000FFC000000FF800007FC000000FF
800007FE000000FF800007FE000000FF800007FE000000FF800007FE000000FF800007FE
000000FF800007FE000000FF800007FC000000FF80000FFC000000FF80000FF8000000FF
80001FF0000000FF80003FE0000000FF80007FC0000000FF8003FF00000000FFFFFFF800
000000FFFFFFE000000000FF8007F800000000FF8001FC00000000FF8000FE00000000FF
80007F00000000FF80007F80000000FF80003FC0000000FF80003FC0000000FF80003FE0
000000FF80003FE0000000FF80003FE0000000FF80003FE0000000FF80003FE0000000FF
80003FF0000000FF80003FF0000000FF80003FF0000000FF80003FF0000000FF80003FF0
038000FF80003FF8038000FF80001FF8038000FF80001FF8030000FF80000FFC0700FFFF
FF8003FE0E00FFFFFF8001FFFC00FFFFFF80001FF00039317EB03C>82
D<001FF8018000FFFF038003FFFFC78007F007EF800F8000FF801F00007F803E00001F80
3E00000F807C00000F807C00000780FC00000780FC00000780FC00000380FE00000380FE
00000380FF00000000FFC00000007FF00000007FFF8000003FFFF800003FFFFF80001FFF
FFF0000FFFFFF80007FFFFFC0003FFFFFF0000FFFFFF00003FFFFF800001FFFFC000001F
FFE0000001FFE00000003FE00000001FF00000000FF000000007F060000007F0E0000003
F0E0000003F0E0000003F0E0000003E0F0000003E0F0000003E0F8000007C0FC000007C0
FF00000F80FFC0001F00FBFC00FE00F1FFFFF800E03FFFF000C003FF800024317CB02D>
I<7FFFFFFFFFFF007FFFFFFFFFFF007FFFFFFFFFFF007FC00FF801FF007E000FF8003F00
7C000FF8001F0078000FF8000F0078000FF8000F0070000FF8000700F0000FF8000780F0
000FF8000780F0000FF8000780E0000FF8000380E0000FF8000380E0000FF8000380E000
0FF8000380E0000FF800038000000FF800000000000FF800000000000FF800000000000F
F800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF8
00000000000FF800000000000FF800000000000FF800000000000FF800000000000FF800
000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80000
0000000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000
00000FF800000000000FF800000000000FF800000000000FF8000000007FFFFFFF000000
7FFFFFFF0000007FFFFFFF000031307DAF38>I<FFFFFF8003FFFF80FFFFFF8003FFFF80
FFFFFF8003FFFF8000FF80000007C00000FF80000003800000FF80000003800000FF8000
0003800000FF80000003800000FF80000003800000FF80000003800000FF800000038000
00FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF8000
0003800000FF80000003800000FF80000003800000FF80000003800000FF800000038000
00FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF8000
0003800000FF80000003800000FF80000003800000FF80000003800000FF800000038000
00FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF8000
0003800000FF80000003800000FF800000038000007F800000038000007F800000070000
007FC00000070000003FC000000E0000003FC000000E0000001FE000001C0000000FF000
003800000007F800007000000003FC0001E000000000FF801FC0000000003FFFFF800000
00000FFFFE000000000000FFE000000039317EB03E>I<FFFFFE00007FFFC0FFFFFE0000
7FFFC0FFFFFE00007FFFC001FFC0000001E00000FFC0000003C000007FE0000003800000
7FF00000078000003FF800000F0000001FF800000E0000001FFC00001E0000000FFE0000
1C00000007FE00003800000007FF00007800000003FF80007000000001FF8000F0000000
00FFC001E000000000FFE001C0000000007FE003C0000000003FF00780000000003FF807
00000000001FF80F00000000000FFC1E00000000000FFE1C000000000007FE3C00000000
0003FF78000000000003FFF0000000000001FFF0000000000000FFE0000000000000FFC0
0000000000007FC00000000000007FC00000000000007FC00000000000007FC000000000
00007FC00000000000007FC00000000000007FC00000000000007FC00000000000007FC0
0000000000007FC00000000000007FC00000000000007FC00000000000007FC000000000
00007FC00000000000007FC00000000000007FC00000000000007FC000000000007FFFFF
80000000007FFFFF80000000007FFFFF8000003A317FB03D>89 D<00FFF0000003FFFF00
000F803F80000FC00FE0001FE007F0001FE007F0001FE003F8000FC003FC00078003FC00
000003FC00000003FC00000003FC00000003FC000000FFFC00001FFFFC0000FFE3FC0003
FC03FC000FF003FC001FC003FC003FC003FC007F8003FC007F8003FC00FF0003FC00FF00
03FC00FF0003FC00FF0007FC00FF0007FC007F800DFC003FC01DFE001FE078FFF007FFE0
7FF000FF803FF024207E9F27>97 D<01F8000000FFF8000000FFF8000000FFF80000000F
F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
00000007F800000007F800000007F800000007F800000007F800000007F800000007F83F
E00007F8FFFC0007FBE07F0007FF001F8007FE000FC007FC000FE007F80007F007F80007
F807F80007F807F80003FC07F80003FC07F80003FC07F80003FE07F80003FE07F80003FE
07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FC07F80003FC07
F80003FC07F80007F807F80007F807F80007F007FC000FE007FE000FC007E7003F8007C3
C0FE000780FFF80007003FC00027327EB12D>I<000FFF00007FFFC001FC01F003F003F0
07E007F80FE007F81FC007F83FC003F03FC001E07F8000007F8000007F800000FF800000
FF800000FF800000FF800000FF800000FF800000FF800000FF8000007F8000007F800000
7F8000003FC0001C3FC0001C1FC000380FE0003807E0007003F001E001FC07C0007FFF00
000FF8001E207D9F24>I<0000000FC0000007FFC0000007FFC0000007FFC00000007FC0
0000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000
00003FC00000003FC00000003FC00000003FC00000003FC00000003FC00007F83FC0003F
FF3FC000FE07BFC003F801FFC007E0007FC00FE0007FC01FC0003FC03FC0003FC03FC000
3FC07F80003FC07F80003FC07F80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003F
C0FF80003FC0FF80003FC0FF80003FC0FF80003FC07F80003FC07F80003FC07F80003FC0
3FC0003FC03FC0003FC01FC0003FC00FE0007FC007E000FFC003F003FFE001FC0F3FFE00
7FFE3FFE000FF03FFE27327DB12D>I<000FFC00007FFF8001FC0FC003F003E007E001F0
0FE001F81FC000FC3FC000FE3FC000FE7F80007E7F80007F7F80007FFF80007FFF80007F
FFFFFFFFFFFFFFFFFF800000FF800000FF800000FF8000007F8000007F8000007F800000
3FC000071FC000071FC0000E0FE0000E07F0001C03F8007800FE03E0003FFFC00007FE00
20207E9F25>I<0001FE00000FFF80001FC3C0007F07E000FE0FF001FE0FF001FC0FF003
FC0FF003FC07E003FC018003FC000003FC000003FC000003FC000003FC000003FC000003
FC000003FC0000FFFFFC00FFFFFC00FFFFFC0003FC000003FC000003FC000003FC000003
FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003
FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003
FC000003FC000003FC000003FC00007FFFF0007FFFF0007FFFF0001C327EB119>I<001F
F007C000FFFE3FE001F83F79F007E00FC3F00FE00FE1F00FC007E0E01FC007F0001FC007
F0003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8001FC007F0001FC007F0
000FC007E0000FE00FE00007E00FC00003F83F000006FFFE00000E1FF000000E00000000
1E000000001E000000001F000000001F800000001FFFFF80000FFFFFF0000FFFFFFC0007
FFFFFE0003FFFFFF0003FFFFFF800FFFFFFFC03F00007FC07E00001FE07C00000FE0FC00
0007E0FC000007E0FC000007E0FC000007E07E00000FC03E00000F803F00001F800FC000
7E0007F803FC0001FFFFF000001FFF0000242F7E9F28>I<01F8000000FFF8000000FFF8
000000FFF80000000FF800000007F800000007F800000007F800000007F800000007F800
000007F800000007F800000007F800000007F800000007F800000007F800000007F80000
0007F800000007F807F80007F83FFE0007F8783F0007F8C03F8007F9801FC007FB001FC0
07FE001FE007FC001FE007FC001FE007FC001FE007F8001FE007F8001FE007F8001FE007
F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8
001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800
1FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28327DB12D>I<03C00007E0000F
F0001FF8001FF8001FF8001FF8000FF00007E00003C00000000000000000000000000000
000000000000000000000000000001F8007FF8007FF8007FF80007F80007F80007F80007
F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
F80007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFF80FFFF80FF
FF8011337DB217>I<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F8
00000007F800000007F800000007F800000007F800000007F800000007F800000007F800
000007F800000007F800000007F800000007F800000007F800000007F800FFF807F800FF
F807F800FFF807F8003F0007F8003C0007F800780007F800F00007F803C00007F8078000
07F80F000007F81E000007F878000007F8FC000007F9FE000007FBFE000007FFFF000007
FE7F800007FC7FC00007F83FC00007F01FE00007F00FF00007F00FF80007F007FC0007F0
03FC0007F001FE0007F000FF0007F000FF8007F0007F8007F0007FC0FFFF81FFFEFFFF81
FFFEFFFF81FFFE27327EB12B>107 D<01F800FFF800FFF800FFF8000FF80007F80007F8
0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
0007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117>I<03F007F8001FE0
00FFF03FFE00FFF800FFF0783F01E0FC00FFF0C03F8300FE000FF1801FC6007F0007F300
1FCC007F0007F6001FF8007F8007FC001FF0007F8007FC001FF0007F8007FC001FF0007F
8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F800
1FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F
8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F800
1FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F
8007F8001FE0007F80FFFFC3FFFF0FFFFCFFFFC3FFFF0FFFFCFFFFC3FFFF0FFFFC3E207D
9F43>I<03F007F800FFF03FFE00FFF0783F00FFF0C03F800FF1801FC007F3001FC007F6
001FE007FC001FE007FC001FE007FC001FE007F8001FE007F8001FE007F8001FE007F800
1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001F
E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
07F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28207D9F2D>I<0007FC0000007FFFC0
0001FC07F00003F001F80007E000FC000FC0007E001FC0007F003FC0007F803F80003F80
7F80003FC07F80003FC07F80003FC0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF
80003FE0FF80003FE0FF80003FE0FF80003FE07F80003FC07F80003FC07F80003FC03FC0
007F803FC0007F801FC0007F000FE000FE0007E000FC0003F803F80001FE0FF000007FFF
C0000007FC000023207E9F28>I<01F83FE000FFF8FFFC00FFFBE07F00FFFF003F8007FE
001FC007FC000FE007F8000FF007F80007F807F80007F807F80007FC07F80003FC07F800
03FC07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003
FE07F80003FE07F80003FC07F80007FC07F80007FC07F80007F807F80007F807F8000FF0
07FC000FE007FE001FC007FF003F8007FBC0FE0007F8FFF80007F83FC00007F800000007
F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
00000007F800000007F8000000FFFFC00000FFFFC00000FFFFC00000272E7E9F2D>I<03
F03F00FFF07FC0FFF1C3E0FFF187E00FF30FF007F60FF007F60FF007FC07E007FC03C007
FC000007FC000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007
F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007
F8000007F80000FFFFE000FFFFE000FFFFE0001C207E9F21>114
D<01FF860007FFFE001F00FE003C003E0078001E0078000E00F8000E00F8000E00F8000E
00FC000000FF800000FFFC00007FFFC0003FFFF0003FFFF8001FFFFC0007FFFE0001FFFF
00003FFF000000FF8000003F8060001F80E0000F80E0000F80F0000F80F0000F00F8000F
00FC001E00FE001C00FF807800F3FFF000C07F800019207D9F20>I<001C0000001C0000
001C0000001C0000001C0000003C0000003C0000003C0000007C0000007C000000FC0000
01FC000003FC000007FC00001FFFFE00FFFFFE00FFFFFE0003FC000003FC000003FC0000
03FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000
03FC000003FC000003FC000003FC000003FC038003FC038003FC038003FC038003FC0380
03FC038003FC038001FC038001FC070000FE0700007F0E00003FFC000007F000192E7FAD
1F>I<01F80007E0FFF803FFE0FFF803FFE0FFF803FFE00FF8003FE007F8001FE007F800
1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001F
E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
07F8001FE007F8001FE007F8001FE007F8003FE007F8003FE003F8007FE003F8007FE001
FC00DFF000FE039FFF007FFF1FFF000FFC1FFF28207D9F2D>I<FFFF001FFCFFFF001FFC
FFFF001FFC0FF80003C007F800038007FC00078003FC00070003FE00070001FE000E0001
FF000E0000FF001C0000FF001C0000FF803C00007F803800007FC07800003FC07000003F
E0F000001FE0E000001FF1E000000FF1C000000FF9C0000007FB80000007FB80000007FF
80000003FF00000003FF00000001FE00000001FE00000000FC00000000FC000000007800
00000078000026207E9F2B>I<7FFF807FFC7FFF807FFC7FFF807FFC03FC000F0001FE00
1E0000FF003C0000FF803800007FC07800003FC0F000001FE1E000000FF3C000000FFF80
000007FF00000003FE00000001FE00000000FF00000000FF80000000FFC0000001FFC000
0003DFE00000078FF00000078FF800000F07FC00001E03FE00003C01FE00007800FF0000
F000FF8001E0007FC003E0003FE0FFFC01FFFFFFFC01FFFFFFFC01FFFF28207F9F2B>
120 D<FFFF001FFCFFFF001FFCFFFF001FFC0FF80003C007F800038007FC00078003FC00
070003FE00070001FE000E0001FF000E0000FF001C0000FF001C0000FF803C00007F8038
00007FC07800003FC07000003FE0F000001FE0E000001FF1E000000FF1C000000FF9C000
0007FB80000007FB80000007FF80000003FF00000003FF00000001FE00000001FE000000
00FC00000000FC000000007800000000780000000070000000007000000000F000000000
E000000001E000007C01C00000FE03C00000FE03800000FE07000000FE0F000000FC1E00
0000787C0000003FF00000000FC0000000262E7E9F2B>I E /Fn
2 16 df<0000FF00000007FFE000001F00F8000078001E0000E000070001800001800300
0000C006000000600C000000300C000000301800000018300000000C300000000C600000
0006600000000660000000066000000006C000000003C000000003C000000003C0000000
03C000000003C000000003C000000003C000000003C00000000360000000066000000006
60000000066000000006300000000C300000000C18000000180C000000300C0000003006
0000006003000000C0018000018000E00007000078001E00001F00F8000007FFE0000000
FF0000282B7EA02D>13 D<03F0000FFC001FFE003FFF007FFF807FFF80FFFFC0FFFFC0FF
FFC0FFFFC0FFFFC0FFFFC07FFF807FFF803FFF001FFE000FFC0003F00012127E9317>15
D E /Fo 64 123 df<0001FF0000001FFFC000007F81E00000FC01E00001F807F00003F8
07F00007F007F00007F007F00007F007F00007F007F00007F001C00007F000000007F000
000007F000000007F03FF800FFFFFFF800FFFFFFF800FFFFFFF80007F003F80007F003F8
0007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F800
07F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007
F003F80007F003F80007F003F80007F003F80007F003F8007FFF3FFF807FFF3FFF807FFF
3FFF80212A7FA925>12 D<0001FFF800001FFFF800007F03F80000FC03F80001F807F800
03F807F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007
F003F80007F003F80007F003F800FFFFFFF800FFFFFFF800FFFFFFF80007F003F80007F0
03F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003
F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F8
0007F003F80007F003F80007F003F80007F003F80007F003F8007FFF3FFF807FFF3FFF80
7FFF3FFF80212A7FA925>I<001C0000001C0000001C0000007F800003FFE0000FFFF800
1F9CFC003E1C1E003C1C0F007C1C0700781C0F80F81C1F80F81C3F80F81C3F80F81C3F80
FC1C3F80FE1C1F00FF1C00007FDC00007FFC00007FFFC0003FFFE0001FFFF0000FFFFC00
07FFFC0001FFFE00007FFF00001FFF00001CFF00001C3F80381C1F807C1C1F80FE1C0F80
FE1C0F80FE1C0F80FC1C0F80F81C0F00701C0F00701C1F00381C1E003C1C3C001F9CF800
0FFFF00003FFE00000FF0000001C0000001C0000001C000019307CAC22>36
D<01F00000018007FC000003C00F0E000007C01E0780000F803E03E0003F007C03FC00FF
007C039FFFFE007C01C3FF7C00FC01C0007800FC01C000F800FC01C001F000FC01C003E0
00FC01C003C000FC01C007C000FC01C00F8000FC01C01F00007C01C01E00007C03803E00
007C03807C00003E0300F800001E0700F000000F0E01F0000007FC03E0000001F007C000
00000007800F8000000F803FE000001F00787000003E00F03800003C01F01800007C03E0
1C0000F803E01C0001F003E00E0001E007E00E0003E007E00E0007C007E00E000F8007E0
0E000F0007E00E001F0007E00E003E0007E00E007C0007E00E00780003E00E00F80003E0
1C01F00003E01C03E00001F01803C00000F03807C000007870078000003FE0030000000F
802F307CAC38>I<3C007F00FF80FF80FFC0FFC0FFC07FC03EC000C000C0018001800180
0300030006000E001C00380010000A157B8813>44 D<FFFF80FFFF80FFFF80FFFF80FFFF
80FFFF8011067F9016>I<1C007F007F00FF80FF80FF807F007F001C0009097B8813>I<00
000300000007800000078000000F8000000F0000000F0000001F0000001E0000003E0000
003C0000003C0000007C0000007800000078000000F8000000F0000001F0000001E00000
01E0000003E0000003C0000003C0000007C00000078000000F8000000F0000000F000000
1F0000001E0000003E0000003C0000003C0000007C0000007800000078000000F8000000
F0000001F0000001E0000001E0000003E0000003C0000003C0000007C00000078000000F
8000000F0000000F0000001F0000001E0000001E0000003E0000003C0000007C00000078
00000078000000F8000000F0000000F000000060000000193C7CAC22>I<000E00001E00
007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00FFFFFEFFFFFE
FFFFFE17277BA622>49 D<00FF800007FFF0000FFFFC001E03FE003800FF807C003F80FE
003FC0FF001FC0FF001FE0FF000FE0FF000FE07E000FE03C001FE000001FE000001FC000
001FC000003F8000003F0000007E000000FC000000F8000001F0000003E0000007800000
0F0000001E0000003C00E0007000E000E000E001C001C0038001C0060001C00FFFFFC01F
FFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FF
F00007FFFC000F81FE001F007F003F807F003F803F803F803F803F803F801F803F801F00
3F8000007F0000007F0000007E000000FC000001F8000007F00000FFC00000FFC0000001
F80000007E0000003F0000003F8000001FC000001FC000001FE000001FE03C001FE07E00
1FE0FF001FE0FF001FE0FF001FC0FF003FC0FE003F807C007F003F01FE001FFFFC0007FF
F00000FF80001B277DA622>I<00000F0000000F0000001F0000003F0000007F000000FF
000001FF000001FF000003BF0000073F00000E3F00001C3F00003C3F0000383F0000703F
0000E03F0001C03F0003803F0007803F0007003F000E003F001C003F0038003F0070003F
00F0003F00FFFFFFF8FFFFFFF8FFFFFFF800007F0000007F0000007F0000007F0000007F
0000007F0000007F0000007F00001FFFF8001FFFF8001FFFF81D277EA622>I<18000300
1F801F001FFFFE001FFFFC001FFFF8001FFFF0001FFFC0001FFF00001C0000001C000000
1C0000001C0000001C0000001C0000001C0000001C7FC0001DFFF8001F80FC001E003F00
08003F0000001F8000001FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0
FE001FE0FE001FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFFFC00
03FFF00000FF80001B277DA622>I<0007F800003FFE0000FFFF0001FC078003F00FC007
C01FC00F801FC01F801FC01F001FC03F000F803F0000007E0000007E0000007E000000FE
020000FE1FF000FE3FFC00FE603E00FE801F00FF801F80FF000FC0FF000FC0FE000FE0FE
000FE0FE000FE0FE000FE07E000FE07E000FE07E000FE07E000FE03E000FE03F000FC01F
000FC01F001F800F801F0007E07E0003FFFC0001FFF800003FC0001B277DA622>I<3800
00003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFF807FFFFF007000
0E0070000E0070001C00E0003800E0007000E000E0000001C0000001C000000380000007
800000070000000F0000001F0000001E0000003E0000003E0000007E0000007C0000007C
000000FC000000FC000000FC000000FC000001FC000001FC000001FC000001FC000001FC
000001FC000001FC000000F80000007000001C297CA822>I<003FC00001FFF00003FFFC
0007C07E000F003F001E001F001E000F803E000F803E000F803F000F803F800F803FC00F
003FF01F001FFC1E001FFE3C000FFFF80007FFE00003FFF00001FFFC0001FFFE0007FFFF
000F0FFF801E07FFC03E01FFC07C007FE07C001FE0F8000FE0F80007E0F80003E0F80003
E0F80003E0F80003C07C0003C07E0007803F000F001FC03F000FFFFC0003FFF800007FC0
001B277DA622>I<007F800001FFF00007FFF8000FC0FC001F803E003F001F007E001F80
7E001F807E000F80FE000FC0FE000FC0FE000FC0FE000FE0FE000FE0FE000FE0FE000FE0
FE000FE07E001FE07E001FE03F003FE01F002FE00F80CFE007FF8FE001FF0FE000080FE0
00000FC000000FC000000FC000001F803E001F807F001F807F003F007F003E007F007E00
7E00FC003E03F8001FFFE0000FFF800001FE00001B277DA622>I<1C007F007F00FF80FF
80FF807F007F001C000000000000000000000000000000000000001C007F007F00FF80FF
80FF807F007F001C00091B7B9A13>I<00000780000000000780000000000FC000000000
0FC0000000000FC0000000001FE0000000001FE0000000003FF0000000003FF000000000
3FF00000000077F80000000077F800000000F7FC00000000E3FC00000000E3FC00000001
C1FE00000001C1FE00000003C1FF0000000380FF0000000380FF00000007007F80000007
007F8000000F007FC000000E003FC000000E003FC000001C001FE000001C001FE000003F
FFFFF000003FFFFFF000003FFFFFF00000700007F80000700007F80000F00007FC0000E0
0003FC0001E00003FE0001C00001FE0001C00001FE0003C00001FF00FFFE003FFFFCFFFE
003FFFFCFFFE003FFFFC2E297EA833>65 D<FFFFFFF800FFFFFFFF00FFFFFFFFC003F800
1FE003F8000FF003F80007F803F80003F803F80003FC03F80003FC03F80001FC03F80001
FC03F80001FC03F80003FC03F80003F803F80003F803F80007F003F8000FF003F8001FC0
03F800FF8003FFFFFE0003FFFFFFC003F8000FF003F80003F803F80001FC03F80001FE03
F80000FE03F80000FE03F80000FF03F80000FF03F80000FF03F80000FF03F80000FF03F8
0000FF03F80000FE03F80001FE03F80003FC03F80007FC03F8001FF8FFFFFFFFE0FFFFFF
FFC0FFFFFFFE0028297DA830>I<00007FE0030007FFFC07001FFFFF0F007FF00F9F00FF
0001FF01FC0000FF03F800007F07F000003F0FE000001F1FC000001F1FC000000F3F8000
000F3F800000077F800000077F800000077F00000000FF00000000FF00000000FF000000
00FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F00000000
7F800000007F800000073F800000073F800000071FC00000071FC000000E0FE000000E07
F000001C03F800003C01FC00007800FF0001F0007FF007C0001FFFFF800007FFFE000000
7FF00028297CA831>I<FFFFFFFC0000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC
0003FC0003FC0000FE0003FC00007F0003FC00003F8003FC00001FC003FC00001FC003FC
00000FE003FC00000FE003FC000007F003FC000007F003FC000007F003FC000007F003FC
000007F803FC000007F803FC000007F803FC000007F803FC000007F803FC000007F803FC
000007F803FC000007F803FC000007F803FC000007F803FC000007F003FC000007F003FC
000007F003FC00000FE003FC00000FE003FC00000FC003FC00001FC003FC00003F8003FC
00007F0003FC0000FF0003FC0003FC0003FC001FF800FFFFFFFFF000FFFFFFFF8000FFFF
FFFC00002D297EA834>I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F0
03FC0001F003FC0001F003FC0000F003FC00007003FC00007003FC00007003FC01C07803
FC01C03803FC01C03803FC01C03803FC03C00003FC03C00003FC0FC00003FFFFC00003FF
FFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C00E03FC01C00E03FC01
C00E03FC01C01C03FC00001C03FC00001C03FC00001C03FC00003C03FC00003803FC0000
7803FC0000F803FC0001F803FC0003F803FC001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0
27297EA82C>I<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003FC0003
E003FC0001E003FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003FC01C070
03FC01C07003FC01C07003FC01C00003FC03C00003FC03C00003FC0FC00003FFFFC00003
FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C00003FC01C00003FC
01C00003FC01C00003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
000003FC00000003FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC000024297EA8
2A>I<00007FE003000007FFFC0700001FFFFF0F00007FF00F9F0000FF0001FF0001FC00
00FF0003F800007F0007F000003F000FE000001F001FC000001F001FC000000F003F8000
000F003F80000007007F80000007007F80000007007F0000000000FF0000000000FF0000
000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000
000000FF0000FFFFF87F0000FFFFF87F8000FFFFF87F800000FF003F800000FF003F8000
00FF001FC00000FF001FC00000FF000FE00000FF0007F00000FF0003F80000FF0001FC00
00FF0000FF0001FF00007FF007FF00001FFFFF9F000007FFFE0F0000007FF003002D297C
A835>I<FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF03FC00003FC003FC00003FC003FC
00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC
00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC
00003FC003FFFFFFFFC003FFFFFFFFC003FFFFFFFFC003FC00003FC003FC00003FC003FC
00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC
00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC
00003FC003FC00003FC003FC00003FC0FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF3029
7EA835>I<FFFFF0FFFFF0FFFFF003FC0003FC0003FC0003FC0003FC0003FC0003FC0003
FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003
FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003
FC0003FC0003FC0003FC00FFFFF0FFFFF0FFFFF014297EA819>I<FFFFF000FFFEFFFFF0
00FFFEFFFFF000FFFE03FC00000F0003FC00001E0003FC00003C0003FC0000780003FC00
00E00003FC0003C00003FC0007800003FC000F000003FC001E000003FC003C000003FC00
F0000003FC01E0000003FC03C0000003FC07C0000003FC0FC0000003FC1FE0000003FC7F
F0000003FCFFF8000003FDE7F8000003FFC3FC000003FF83FE000003FE01FF000003FC00
FF000003FC007F800003FC007FC00003FC003FE00003FC001FE00003FC000FF00003FC00
0FF80003FC0007F80003FC0003FC0003FC0001FE0003FC0001FF0003FC0000FF0003FC00
007F80FFFFF00FFFFEFFFFF00FFFFEFFFFF00FFFFE2F297EA835>75
D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC000000
03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003
FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
00000003FC00000003FC00000003FC0001C003FC0001C003FC0001C003FC0001C003FC00
03C003FC00038003FC00038003FC00078003FC00078003FC000F8003FC000F8003FC001F
8003FC007F8003FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF0022297EA828>I<FFFE00
00003FFF80FFFE0000003FFF80FFFF0000007FFF8003FF0000007FE00003FF0000007FE0
0003BF800000EFE00003BF800000EFE000039FC00001CFE000039FC00001CFE000038FE0
00038FE000038FE000038FE000038FE000038FE0000387F000070FE0000387F000070FE0
000383F8000E0FE0000383F8000E0FE0000381FC001C0FE0000381FC001C0FE0000381FC
001C0FE0000380FE00380FE0000380FE00380FE00003807F00700FE00003807F00700FE0
0003803F80E00FE00003803F80E00FE00003803F80E00FE00003801FC1C00FE00003801F
C1C00FE00003800FE3800FE00003800FE3800FE000038007F7000FE000038007F7000FE0
00038007F7000FE000038003FE000FE000038003FE000FE000038001FC000FE000038001
FC000FE000038000F8000FE000FFFE00F803FFFF80FFFE00F803FFFF80FFFE007003FFFF
8039297DA840>I<FFFC00007FFFFFFE00007FFFFFFF00007FFF03FF800001C003FFC000
01C003BFE00001C0039FE00001C0039FF00001C0038FF80001C00387FC0001C00383FE00
01C00381FF0001C00380FF8001C003807F8001C003807FC001C003803FE001C003801FF0
01C003800FF801C0038007FC01C0038003FC01C0038003FE01C0038001FF01C0038000FF
81C00380007FC1C00380003FE1C00380001FF1C00380000FF1C00380000FF9C003800007
FDC003800003FFC003800001FFC003800000FFC0038000007FC0038000007FC003800000
3FC0038000001FC0038000000FC00380000007C0FFFE000003C0FFFE000001C0FFFE0000
01C030297EA835>I<0000FFC00000000FFFFC0000003F807F000000FE001FC00001F800
07E00003F00003F00007E00001F8000FE00001FC001FC00000FE001FC00000FE003F8000
007F003F8000007F007F8000007F807F0000003F807F0000003F807F0000003F80FF0000
003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000
003FC0FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000
007F803F8000007F003F8000007F001FC00000FE001FC00000FE000FE00001FC0007F000
03F80003F80007F00001FC000FE00000FE001FC000003FC0FF0000000FFFFC00000000FF
C000002A297CA833>I<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC0007F003
FC0003F803FC0003FC03FC0001FC03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC
0001FE03FC0001FE03FC0001FE03FC0001FC03FC0003FC03FC0003F803FC0007F003FC00
3FE003FFFFFF8003FFFFFE0003FC00000003FC00000003FC00000003FC00000003FC0000
0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
03FC00000003FC00000003FC00000003FC000000FFFFF00000FFFFF00000FFFFF0000027
297EA82E>I<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC003FE00003FC000FF000
03FC0007F80003FC0003FC0003FC0001FC0003FC0001FE0003FC0001FE0003FC0001FE00
03FC0001FE0003FC0001FE0003FC0001FE0003FC0001FC0003FC0003F80003FC0007F800
03FC000FE00003FC003FC00003FFFFFE000003FFFFFE000003FC00FF800003FC003FC000
03FC001FE00003FC000FF00003FC0007F80003FC0007F80003FC0007F80003FC0007F800
03FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80E
03FC0007F80E03FC0003F80E03FC0001FC1CFFFFF000FE1CFFFFF0007FF8FFFFF0000FE0
2F297EA832>82 D<00FF806003FFF0E00FFFF8E01F80FDE03F001FE03E0007E07C0003E0
7C0003E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFC0000
7FFFE0003FFFF8001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007FE0
00001FF000000FF0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F00003E0
F80007E0FC0007C0FF000F80FFE03F80E3FFFE00E1FFFC00C01FF0001C297CA825>I<7F
FFFFFFFF807FFFFFFFFF807FFFFFFFFF807F807F807F807C007F800F8078007F80078078
007F80078070007F800380F0007F8003C0F0007F8003C0E0007F8001C0E0007F8001C0E0
007F8001C0E0007F8001C0E0007F8001C000007F80000000007F80000000007F80000000
007F80000000007F80000000007F80000000007F80000000007F80000000007F80000000
007F80000000007F80000000007F80000000007F80000000007F80000000007F80000000
007F80000000007F80000000007F80000000007F80000000007F80000000007F80000000
007F80000000FFFFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F>I<FFFFF000FFFE
FFFFF000FFFEFFFFF000FFFE03FC0000038003FC0000038003FC0000038003FC00000380
03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00000380
03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00000380
03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00000380
03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00000380
01FC0000070001FE0000070000FE00000E00007F00000E00003F00003C00001FC0007800
000FF003F0000007FFFFE0000000FFFF800000001FFC00002F297EA834>I<FFFFF0007F
FFFFFFF0007FFFFFFFF0007FFF03FE000001C001FE0000038001FE0000038001FF000007
8000FF0000070000FF80000F00007F80000E00007FC0000E00003FC0001C00003FC0001C
00003FE0003C00001FE0003800001FF0007800000FF0007000000FF80070000007F800E0
000007F800E0000003FC01C0000003FC01C0000003FE03C0000001FE0380000001FF0780
000000FF0700000000FF87000000007F8E000000007F8E000000007FDE000000003FDC00
0000003FFC000000001FF8000000001FF8000000000FF0000000000FF0000000000FF000
00000007E00000000007E00000000003C00000000003C0000030297FA833>I<FFFFE07F
FFE01FFFC0FFFFE07FFFE01FFFC0FFFFE07FFFE01FFFC003FC0003FC0000700003FC0003
FC0000700003FE0001FE0000700001FE0001FE0000E00001FE0001FE0000E00001FF0001
FF0001E00000FF0001FF0001C00000FF0003FF8001C00000FF8003FF8003C000007F8003
FF80038000007F8007FFC0038000003FC0073FC0070000003FC0073FC0070000003FE00E
1FE00F0000001FE00E1FE00E0000001FE00E1FF00E0000001FF01C0FF01E0000000FF01C
0FF01C0000000FF03C0FF81C00000007F83807F83800000007F83807F83800000007F878
07FC3800000003FC7003FC7000000003FC7003FC7000000003FEE001FEF000000001FEE0
01FEE000000001FFE001FFE000000001FFC000FFE000000000FFC000FFC000000000FFC0
00FFC0000000007F80007F80000000007F80007F80000000007F80007F80000000003F00
003F00000000003F00003F00000000003E00001F00000000001E00001E00000000001E00
001E00000042297FA845>I<FFFFF0003FFFFFFFF0003FFFFFFFF0003FFF03FE000003C0
01FF0000038000FF8000070000FF80000F00007FC0000E00007FE0001C00003FE0003C00
001FF0003800001FF8007000000FF800F0000007FC00E0000007FE01C0000003FE03C000
0001FF0380000001FF8700000000FF8F000000007FCE000000007FFC000000003FFC0000
00001FF8000000001FF0000000000FF0000000000FF0000000000FF0000000000FF00000
00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
00000FF0000000000FF0000000000FF0000000000FF000000003FFFFC0000003FFFFC000
0003FFFFC00030297FA833>89 D<03FF80000FFFF0001F01FC003F80FE003F807F003F80
3F003F803F801F003F8000003F8000003F8000003F8000003F80003FFF8001FC3F800FE0
3F801F803F803F003F807E003F80FC003F80FC003F80FC003F80FC003F80FC005F807E00
DF803F839FFC1FFE0FFC03FC03FC1E1B7E9A21>97 D<FFE00000FFE00000FFE000000FE0
00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0
00000FE000000FE000000FE1FE000FEFFF800FFE07E00FF803F00FF001F80FE000FC0FE0
00FC0FE0007E0FE0007E0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0
007F0FE0007F0FE0007E0FE0007E0FE0007E0FE000FC0FE000FC0FF001F80FF803F00F9C
0FE00F0FFF800E01FC00202A7EA925>I<003FF00001FFFC0003F03E000FC07F001F807F
003F007F003F007F007F003E007E0000007E000000FE000000FE000000FE000000FE0000
00FE000000FE000000FE0000007E0000007E0000007F0000003F0003803F8003801F8007
000FE00E0003F83C0001FFF800003FC000191B7E9A1E>I<00007FF000007FF000007FF0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F0
3F0007F07E0007F07E0007F07E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0
FE0007F0FE0007F0FE0007F07E0007F07E0007F03F0007F03F0007F01F800FF00FC01FF0
07E07FFF01FFE7FF007F87FF202A7EA925>I<003FC00001FFF00003E07C000F803E001F
801F001F001F003F000F807E000F807E000FC07E000FC0FE0007C0FE0007C0FFFFFFC0FF
FFFFC0FE000000FE000000FE0000007E0000007E0000007F0000003F0001C01F0001C00F
80038007C0070003F01E0000FFFC00003FE0001A1B7E9A1F>I<0007F8003FFC007E3E01
FC7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FF
FFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007
F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007F
FF807FFF807FFF80182A7EA915>I<00FF80F003FFE3F80FC1FE1C1F007C7C3F007E7C3E
003E107E003F007E003F007E003F007E003F007E003F007E003F003E003E003F007E001F
007C000FC1F8000BFFE00018FF80001800000038000000380000003C0000003FFFF8003F
FFFF001FFFFFC00FFFFFE007FFFFF01FFFFFF03C0007F07C0001F8F80000F8F80000F8F8
0000F8F80000F87C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22
>I<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE0
00000FE000000FE000000FE000000FE000000FE000000FE000000FE07E000FE1FF800FE3
0FC00FE40FE00FE807E00FF807F00FF007F00FF007F00FE007F00FE007F00FE007F00FE0
07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
07F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF202A7DA925>I<07000F
801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00F
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE0FFFEFFFEFFFE0F2B7EAA12>I<FFE00000FFE00000FFE000000FE000000FE0
00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0
00000FE000000FE01FFC0FE01FFC0FE01FFC0FE007800FE00F000FE01E000FE03C000FE0
78000FE0E0000FE3C0000FE7C0000FEFE0000FFFF0000FFFF8000FF3F8000FE1FC000FC0
FE000FC07F000FC07F000FC03F800FC01FC00FC00FE00FC00FE00FC007F0FFFC1FFFFFFC
1FFFFFFC1FFF202A7FA923>107 D<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7EA912>I<FFC0
7F001FC000FFC1FFC07FF000FFC307E0C1F8000FC407F101FC000FC803F200FC000FD803
FE00FE000FD003FC00FE000FD003FC00FE000FE003F800FE000FE003F800FE000FE003F8
00FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800
FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE
000FE003F800FE000FE003F800FE000FE003F800FE00FFFE3FFF8FFFE0FFFE3FFF8FFFE0
FFFE3FFF8FFFE0331B7D9A38>I<FFC07E00FFC1FF80FFC30FC00FC40FE00FC807E00FD8
07F00FD007F00FD007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
07F0FFFE3FFFFFFE3FFFFFFE3FFF201B7D9A25>I<003FE00001FFFC0003F07E000FC01F
801F800FC03F0007E03F0007E07E0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003
F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F87E0003F07E0003F03F0007E03F0007
E01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE1FE00FFEFFF80
FFFE0FE00FF803F00FF001F80FE001FC0FE000FC0FE000FE0FE000FE0FE0007F0FE0007F
0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007E0FE000FE0FE000FE
0FE000FC0FE001FC0FF001F80FF807F00FFC0FE00FEFFF800FE1FC000FE000000FE00000
0FE000000FE000000FE000000FE000000FE000000FE000000FE00000FFFE0000FFFE0000
FFFE000020277E9A25>I<FFC1F0FFC7FCFFC63E0FCC7F0FD87F0FD07F0FD07F0FF03E0F
E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
E0000FE0000FE0000FE000FFFF00FFFF00FFFF00181B7F9A1B>114
D<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FE0000FFE0007FFF007FFF
C03FFFE01FFFF007FFF800FFF80007FC0000FCE0007CE0003CF0003CF00038F80038FC00
70FF01E0E7FFC0C1FF00161B7E9A1B>I<00E00000E00000E00000E00001E00001E00001
E00003E00003E00007E0000FE0001FFFE0FFFFE0FFFFE00FE0000FE0000FE0000FE0000F
E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0700FE0700FE0700F
E0700FE0700FE0700FE07007F0E003F0C001FF80007F0014267FA51A>I<FFE07FF0FFE0
7FF0FFE07FF00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
07F00FE007F00FE00FF00FE00FF007E017F003F067FF01FFC7FF007F87FF201B7D9A25>
I<FFFC03FFFFFC03FFFFFC03FF0FF000F007F000E007F800E003F801C003F801C003FC03
C001FC038001FE078000FE070000FF0700007F0E00007F0E00007F9E00003F9C00003FFC
00001FF800001FF800000FF000000FF000000FF0000007E0000007E0000003C0000003C0
00201B7F9A23>I<FFFC7FFC1FFCFFFC7FFC1FFCFFFC7FFC1FFC0FE00FE001C007F007E0
038007F007E0038007F807F0078003F807F0070003F80FF8070003FC0FF80F0001FC0FF8
0E0001FC1FFC0E0000FE1CFC1C0000FE1CFE1C0000FF387E3C00007F387E3800007F787F
3800003FF03F7000003FF03FF000003FE01FF000001FE01FE000001FE01FE000000FC00F
C000000FC00FC000000F8007C0000007800780000007800780002E1B7F9A31>I<FFFC1F
FEFFFC1FFEFFFC1FFE07F0038003F8078003FC0F0001FE1E0000FE3C00007F3800007FF8
00003FF000001FE000000FE000000FF0000007F800000FF800001FFC00003CFE000038FF
0000787F0000F03F8001E01FC003C01FE003800FE0FFF03FFFFFF03FFFFFF03FFF201B7F
9A23>I<FFFC03FFFFFC03FFFFFC03FF0FF000F007F000E007F800E003F801C003F801C0
03FC03C001FC038001FE078000FE070000FF0700007F0E00007F0E00007F9E00003F9C00
003FFC00001FF800001FF800000FF000000FF000000FF0000007E0000007E0000003C000
0003C000000380000003800000078000380700007C0F0000FE0E0000FE1E0000FE1C0000
FE38000074F000003FE000000F80000020277F9A23>I<3FFFFF3FFFFF3F00FE3C01FE38
03FC7803F87807F0700FF0700FE0701FC0003FC0003F80007F0000FF0000FE0001FC0703
FC0703F80707F0070FF00F0FE00F1FC00E3FC01E7F803E7F00FEFFFFFEFFFFFE181B7E9A
1E>I E /Fp 83 125 df<001F83E000F06E3001C078780380F8780300F0300700700007
0070000700700007007000070070000700700007007000FFFFFF80070070000700700007
007000070070000700700007007000070070000700700007007000070070000700700007
0070000700700007007000070070000700700007007000070070003FE3FF001D20809F1B
>11 D<003F0000E0C001C0C00381E00701E00701E0070000070000070000070000070000
070000FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0
0700E00700E00700E00700E00700E00700E00700E00700E03FC3FC1620809F19>I<003F
E000E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFF
E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E00700E00700E00700E00700E00700E00700E03FE7FC1620809F19>I<001F81F80000F0
4F040001C07C06000380F80F000300F00F000700F00F0007007000000700700000070070
0000070070000007007000000700700000FFFFFFFF000700700700070070070007007007
000700700700070070070007007007000700700700070070070007007007000700700700
070070070007007007000700700700070070070007007007000700700700070070070007
007007003FE3FE3FE02320809F26>I<70F8F8F8F8F8F8F8707070707070707070702020
202020000000000070F8F8F87005217CA00D>33 D<7038F87CFC7EFC7E743A0402040204
020804080410081008201040200F0E7F9F17>I<00400000400003F0000C4E0010410020
4080604080404040C041C0C043C0C043C0E04180E040007040007C40003FC0001FF8000F
FC0003FE00007F00004F800043800041C00041C0F040C0F040C0F040C08040C080408040
41802041003042000C4C0003F00000400000400000400012257EA117>36
D<70F8FCFC74040404080810102040060E7C9F0D>39 D<0040008001000300060004000C
001800180038003000300070006000600060006000E000E000E000E000E000E000E000E0
00E000E000E000E00060006000600060007000300030003800180018000C000400060003
000100008000400A2E7BA112>I<8000400020003000180008000C000600060007000300
03000380018001800180018001C001C001C001C001C001C001C001C001C001C001C001C0
01800180018001800380030003000700060006000C000800180030002000400080000A2E
7EA112>I<70F0F8F878080808101010202040050E7C840D>44 D<FFF0FFF00C02808A0F>
I<70F8F8F87005057C840D>I<0000400000C00001800001800001800003000003000003
00000600000600000C00000C00000C000018000018000018000030000030000060000060
0000600000C00000C00000C0000180000180000180000300000300000600000600000600
000C00000C00000C0000180000180000300000300000300000600000600000600000C000
00C00000122D7EA117>I<03F0000E1C001C0E0018060038070070038070038070038070
0380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0
03C0F003C07003807003807003807807803807001806001C0E000E1C0003F000121F7E9D
17>I<008003800F80F38003800380038003800380038003800380038003800380038003
800380038003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0
000C1C00100E00200700400780800780F007C0F803C0F803C0F803C02007C00007C00007
80000780000F00000E00001C0000380000700000600000C0000180000300000600400C00
401800401000803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F0078
0F80780780780780380F80000F80000F00000F00001E00001C0000700007F000003C0000
0E00000F000007800007800007C02007C0F807C0F807C0F807C0F00780400780400F0020
0E00183C0007F000121F7E9D17>I<000600000600000E00000E00001E00002E00002E00
004E00008E00008E00010E00020E00020E00040E00080E00080E00100E00200E00200E00
400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F
9D17>I<1803001FFE001FFC001FF8001FE0001000001000001000001000001000001000
0011F000161C00180E001007001007800003800003800003C00003C00003C07003C0F003
C0F003C0E00380400380400700200600100C0008380007E000121F7E9D17>I<007C0001
82000701000E03800C0780180780380300380000780000700000700000F1F000F21C00F4
0600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C070038038
03803807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFE07FFFC07FFFC0
400080800100800100800200000400000400000800001000001000002000002000006000
00600000E00000C00001C00001C00001C00001C00003C00003C00003C00003C00003C000
03C00003C000018000131F7E9D17>I<03F0000C0C001006003003002001806001806001
806001807001807803003E03003F06001FC8000FF00003F80007FC000C7E00103F00300F
806007806001C0C001C0C000C0C000C0C000C0C000806001802001001002000C0C0003F0
00121F7E9D17>I<03F0000E18001C0C00380600380700700700700380F00380F00380F0
03C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C000038000
0380000380000700300700780600780E00700C002018001070000FC000121F7E9D17>I<
70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F87000000000
00000000000070F0F8F878080808101010202040051D7C930D>I<0FE0103C601E400EE0
0FF00FF00F600F001E001C00380070006000C00080008001000100010001000100010000
000000000000000000038007C007C007C0038010207E9F15>63 D<000100000003800000
038000000380000007C0000007C0000007C0000009E0000009E0000009E0000010F00000
10F0000010F00000207800002078000020780000403C0000403C0000C03E0000801E0000
801E0001FFFF0001000F0001000F00020007800200078002000780040003C0040003C00C
0003C01E0003E0FF801FFE1F207F9F22>65 D<FFFFE0000F0078000F001E000F001E000F
000F000F000F800F000F800F000F800F000F800F000F800F000F000F001F000F001E000F
007C000FFFF0000F007C000F001F000F000F800F0007C00F0003C00F0003E00F0003E00F
0003E00F0003E00F0003E00F0003C00F0007C00F0007800F000F000F003E00FFFFF0001B
1F7E9E20>I<000FE01000381C3000E0027003C00170078000F00F0000701E0000701E00
00303C0000303C0000107C00001078000010F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000780000007C0000103C0000103C0000101E00
00201E0000200F0000200780004003C0008000E0030000380C00000FF0001C217E9F21>
I<FFFFF80007801E0007800780078003C0078001E0078000F00780007007800078078000
780780003C0780003C0780003C0780003E0780003E0780003E0780003E0780003E078000
3E0780003E0780003E0780003C0780003C0780007C0780007807800078078000F0078001
E0078003C00780078007801E00FFFFF8001F1F7F9E23>I<FFFFFF800F000F800F000380
0F0001800F0000800F0000C00F0000400F0000400F0000400F0040400F0040000F004000
0F00C0000F01C0000FFFC0000F01C0000F00C0000F0040000F0040000F0040000F000020
0F0000200F0000200F0000400F0000400F0000400F0000C00F0001C00F0003800F000F80
FFFFFF801B1F7E9E1F>I<FFFFFF8007800780078001800780018007800080078000C007
800040078000400780004007800040078020000780200007802000078060000780E00007
FFE0000780E0000780600007802000078020000780200007800000078000000780000007
8000000780000007800000078000000780000007C00000FFFE00001A1F7F9E1E>I<000F
E01000381C3000E0027003C00170078000F00F0000701E0000701E0000303C0000303C00
00107C00001078000010F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8003FFEF80001F0780000F07C0000F03C0000F03C0000F01E0000F01E0000F00F00
00F0078000F003C0017000E0023000380C10000FF0001F217E9F24>I<FFF07FF80F0007
800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007
800F0007800F0007800F0007800FFFFF800F0007800F0007800F0007800F0007800F0007
800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007
800F000780FFF07FF81D1F7E9E22>I<FFF00F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F00FFF00C1F7E9E10>I<07FFC0003E00001E00001E00001E00001E00001E00001E
00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E
00001E00001E00001E00201E00F81E00F81E00F81E00F01C00403C006038001070000FC0
0012207F9E17>I<FFF007FC0F0003E00F0001800F0001000F0002000F0004000F000800
0F0010000F0020000F0040000F0080000F0100000F0300000F0780000F0F80000F13C000
0F21E0000F41E0000F80F0000F0078000F0078000F003C000F001E000F001E000F000F00
0F0007800F0007800F0003C00F0003E00F0003F0FFF01FFE1F1F7E9E23>I<FFF8000F80
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00020F00020F00020F00020F00060F00
040F00040F000C0F001C0F007CFFFFFC171F7E9E1C>I<FF800007FE07800007C0078000
07C005C0000BC005C0000BC004E00013C004E00013C004E00013C004700023C004700023
C004380043C004380043C004380043C0041C0083C0041C0083C0040E0103C0040E0103C0
040E0103C004070203C004070203C004070203C004038403C004038403C00401C803C004
01C803C00401C803C00400F003C00400F003C004006003C01F006003C0FFE0607FFE271F
7F9E2A>I<FF000FF80F8003E00F8000800BC0008009E0008009E0008008F00080087800
8008780080083C0080081E0080081E0080080F008008078080080780800803C0800801E0
800801E0800800F080080078800800788008003C8008001E8008001E8008000F80080007
800800078008000380080001803E000180FF8000801D1F7E9E22>I<001FE00000703800
01C00E0003800700070003800F0003C01E0001E03C0000F03C0000F07C0000F87C0000F8
78000078F800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007C
F800007C780000787C0000F87C0000F83C0000F03E0001F01E0001E00F0003C007000380
0380070001E01E0000703800001FE0001E217E9F23>I<FFFFE0000F007C000F001E000F
000F000F0007800F0007800F0007C00F0007C00F0007C00F0007C00F0007800F0007800F
000F000F001E000F007C000FFFE0000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000FF
F000001A1F7E9E1F>I<001FE0000070380001C00E0003800700070003800F0003C01E00
01E03E0001F03C0000F07C0000F87C0000F878000078F800007CF800007CF800007CF800
007CF800007CF800007CF800007CF800007CF800007C780000787C0000F87C0000F83C00
00F03E0781F01E0841E00F1023C0071023800390170001D01E0000783804001FF8040000
1C0400000C0C00000E1C00000FF800000FF8000007F8000007F0000001E01E297E9F23>
I<FFFF80000F00F0000F003C000F001E000F000F000F000F000F000F800F000F800F000F
800F000F800F000F000F000F000F001E000F003C000F00F0000FFF80000F01C0000F0070
000F0070000F0038000F003C000F003C000F003C000F003E000F003E000F003E000F003E
040F003F040F001F040F000F08FFF00788000001F01E207E9E21>I<03F0400C0CC01803
C03001C06000C06000C0E000C0E00040E00040E00040F00000F800007C00007F80003FF8
001FFF0007FF8000FFC0001FE00003E00001E00000F00000708000708000708000708000
70C00060C000E0E000C0F80180C6030081FC0014217E9F19>I<7FFFFFE0780F01E0600F
0060400F0020400F0020C00F0030800F0010800F0010800F0010800F0010000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F
800003FFFC001C1F7E9E21>I<FFF00FF80F0003E00F0000800F0000800F0000800F0000
800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F0000
800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F0000
800700010007800100038001000380020001C0040000E0080000383000000FC0001D207E
9E22>I<FFF003FE1F8000F80F0000600F00002007800040078000400780004003C00080
03C0008003E0018001E0010001E0010000F0020000F0020000F802000078040000780400
003C0800003C0800003C0800001E1000001E1000001F1000000F2000000F20000007C000
0007C0000007C000000380000003800000038000000100001F207F9E22>I<FFF07FF81F
F01F000FC007C00F00078001800F00078001000F0007C001000F8007C00300078007C002
00078009E0020007C009E0020003C009E0040003C019F0040003C010F0040001E010F008
0001E010F0080001E02078080000F02078100000F02078100000F0403C10000078403C20
000078403C20000078801E2000007C801E6000003C801E4000003D000F4000003F000F40
00001F000F8000001F000F8000001E00078000000E00070000000E00070000000C000300
000004000200002C207F9E2F>I<7FF81FF80FE007C007C0030003C0020003E0060001F0
040000F0080000F8180000781000003C2000003E6000001E4000000F8000000F80000007
80000003C0000007E0000005E0000008F0000018F8000010780000207C0000603E000040
1E0000801F0001000F8001000780020007C0060003C01F0007E0FFC01FFE1F1F7F9E22>
I<FFF001FF1F8000780F8000600780006007C0004003C0008003E0008001F0010000F001
0000F80200007C0600003C0400003E0800001E0800001F1000000FB0000007A0000007E0
000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0
000003C0000003C0000003C000003FFC00201F7F9E22>I<FFFFC0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FFFF082D7C
A10D>91 D<080410082010201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7A
9F17>I<FFFF030303030303030303030303030303030303030303030303030303030303
0303030303030303030303FFFF082D80A10D>I<081020204040808080B8FCFC7C38060E
7D9F0D>96 D<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E00
1E0E00380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>
I<1C0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C7C001D87001E01801E00C01C00E01C00701C00701C00781C00781C00781C00781C00
781C00781C00701C00F01C00E01E00C01A0180198700107C0015207E9F19>I<01FC0007
06001C0F00380F00380600780000700000F00000F00000F00000F00000F00000F0000070
00007800003800803800801C010007060001F80011147F9314>I<0001C0000FC00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C001F1C0070DC00C03C0
1801C03801C07801C07001C0F001C0F001C0F001C0F001C0F001C0F001C07001C07001C0
3801C01803C00C03C0070DC001F1F815207F9F19>I<03F0000E1C001C0E003807003807
00700700700380F00380F00380FFFF80F00000F00000F000007000007000003800803800
801C010007060001F80011147F9314>I<007C01C6030F070F0E060E000E000E000E000E
000E000E00FFF00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E007FE01020809F0E>I<0000E003E3300E3C301C1C30380E00780F00780F
00780F00780F00780F00380E001C1C001E380033E0002000002000003000003000003FFE
001FFF801FFFC03001E0600070C00030C00030C00030C000306000603000C01C038003FC
00141F7F9417>I<1C0000FC00001C00001C00001C00001C00001C00001C00001C00001C
00001C00001C00001C7C001C86001D03001E03801E03801C03801C03801C03801C03801C
03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF8FF014207E9F
19>I<38007C007C007C0038000000000000000000000000001C00FC001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091F7F9E0C>I<
00E001F001F001F000E0000000000000000000000000007007F000F00070007000700070
007000700070007000700070007000700070007000700070007000700070007000706070
F060F0C061803F000C28829E0E>I<1C0000FC00001C00001C00001C00001C00001C0000
1C00001C00001C00001C00001C00001C1FE01C07801C06001C04001C08001C10001C2000
1C60001CE0001DF0001E70001C38001C3C001C1C001C0E001C0F001C07001C07801C07C0
FF9FF014207E9F18>I<1C00FC001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
FF8009207F9F0C>I<1C3E03E000FCC30C30001D039038001E01E01C001E01E01C001C01
C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF
8021147E9326>I<1C7C00FC86001D03001E03801E03801C03801C03801C03801C03801C
03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF8FF014147E93
19>I<01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0
F000F0F000F07000E07000E03801C03801C01C0380070E0001F80014147F9317>I<1C7C
00FD87001E01801E01C01C00E01C00F01C00701C00781C00781C00781C00781C00781C00
781C00701C00F01C00E01E01C01E03801D87001C7C001C00001C00001C00001C00001C00
001C00001C00001C0000FF8000151D7E9319>I<01F040070CC00E02C01C03C03801C078
01C07001C0F001C0F001C0F001C0F001C0F001C0F001C07001C07801C03801C01C03C00C
05C00709C001F1C00001C00001C00001C00001C00001C00001C00001C00001C0000FF815
1D7F9318>I<1CF0FD181E3C1E3C1E181C001C001C001C001C001C001C001C001C001C00
1C001C001C001C00FFC00E147E9312>I<0FC830386018C008C008C008E0007C003FE01F
F007F8003C800E8006C006C006C004E00CD81887E00F147F9312>I<0200020002000600
06000E000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E04
0E040E040E040708030801F00E1C7F9B12>I<1C0380FC1F801C03801C03801C03801C03
801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C07
80061B8003E3F014147E9319>I<FF83F83E00E01C00C00E00800E00800E008007010007
010007830003820003820001C40001C40001E40000E80000E80000700000700000700000
200015147F9318>I<FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0
400704C0800704E0800704E08003886100038871000388710001D0320001D03A0001D03E
0000E01C0000E01C0000601800004008001E147F9321>I<FF87F81E03C00E01800E0300
07020003840001C80001D80000F00000700000780000F800009C00010E00020E00060700
0403800C03C03C03E0FE07FC16147F9318>I<FF83F83E00E01C00C00E00800E00800E00
8007010007010007830003820003820001C40001C40001E40000E80000E8000070000070
00007000002000002000004000004000004000F08000F08000F100006200003C0000151D
7F9318>I<7FFF700E600E401C40384078407000E001E001C00380078007010E011E011C
0338027006700EFFFE10147F9314>I<FFFFFFFFFFF02C01808C2D>124
D E /Fq 5 116 df<FFFFFFFFFF800000FFFFFFFFFFF80000FFFFFFFFFFFF0000FFFFFF
FFFFFF8000007FE00003FFE000007FE00000FFF000007FE000003FF800007FE000001FFC
00007FE000001FFC00007FE000000FFE00007FE000000FFE00007FE000000FFF00007FE0
000007FF00007FE0000007FF00007FE0000007FF00007FE0000007FF00007FE0000007FF
00007FE0000007FF00007FE000000FFE00007FE000000FFE00007FE000000FFE00007FE0
00001FFC00007FE000003FF800007FE000003FF000007FE00000FFE000007FE00001FFC0
00007FE0000FFF0000007FFFFFFFFC0000007FFFFFFFFC0000007FFFFFFFFF8000007FE0
0000FFE000007FE000003FF800007FE000000FFC00007FE000000FFE00007FE0000007FF
00007FE0000003FF80007FE0000003FF80007FE0000001FFC0007FE0000001FFC0007FE0
000001FFE0007FE0000001FFE0007FE0000001FFE0007FE0000001FFE0007FE0000001FF
E0007FE0000001FFE0007FE0000001FFE0007FE0000001FFE0007FE0000001FFC0007FE0
000003FFC0007FE0000003FF80007FE0000007FF80007FE000000FFF00007FE000001FFE
00007FE000003FFC00007FE00001FFF800FFFFFFFFFFFFF000FFFFFFFFFFFFC000FFFFFF
FFFFFF0000FFFFFFFFFFF000003B3B7CBA45>66 D<01E00007F8000FFC000FFC001FFE00
1FFE001FFE001FFE000FFC000FFC0007F80001E000000000000000000000000000000000
00000000000000000000000000000000000000FE007FFE007FFE007FFE007FFE0007FE00
03FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00
03FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00
03FE0003FE0003FE0003FE00FFFFF0FFFFF0FFFFF0FFFFF0143D7DBC1A>105
D<01FC00FF8000FFFC03FFF000FFFC0FFFF800FFFC1E03FC00FFFC3801FE0007FC6001FF
0003FCC000FF0003FDC000FF8003FD8000FF8003FF0000FF8003FF0000FF8003FF0000FF
8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF
8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF
8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF
8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF80FFFFF83FFFFEFFFFF83FFF
FEFFFFF83FFFFEFFFFF83FFFFE2F267CA536>110 D<0001FFC00000000FFFF80000007F
FFFF000000FF80FF800003FE003FE00007F8000FF0000FF00007F8000FF00007F8001FE0
0003FC003FE00003FE003FE00003FE007FC00001FF007FC00001FF007FC00001FF007FC0
0001FF00FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC0
0001FF80FFC00001FF80FFC00001FF80FFC00001FF807FC00001FF007FC00001FF007FC0
0001FF003FE00003FE003FE00003FE001FE00003FC001FF00007FC000FF00007F80007F8
000FF00003FE003FE00000FF80FF8000007FFFFF0000000FFFF800000001FFC000002926
7DA530>I<003FF03803FFFE7807FFFFF81FC00FF83F0003F83E0000F87C0000F87C0000
78FC000078FC000078FE000078FF000000FFC00000FFFC00007FFFF0003FFFFE003FFFFF
801FFFFFC00FFFFFE003FFFFF000FFFFF8001FFFFC00007FFC000007FE700001FEF00000
FEF000007EF800007EF800007EFC00007EFC00007CFE0000FCFF0000F8FF8001F0FFF00F
E0F9FFFFC0F07FFF00C01FF8001F267DA526>115 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin

%%EndSetup
%%Page: 1 1
1 0 bop 0 554 a Fq(Bison)p 0 587 1950 17 v 1139 635 a
Fp(The)15 b(Y)l(A)o(CC-compatible)i(P)o(arser)d(Generator)1251
689 y(Decem)o(b)q(er)i(1992,)d(Bison)j(V)l(ersion)g(1.20)0
2534 y Fo(b)n(y)23 b(Charles)g(Donnelly)h(and)e(Ric)n(hard)j(Stallman)p
0 2570 1950 9 v eop
%%Page: 2 2
2 1 bop 0 1042 a Fp(Cop)o(yrigh)o(t)226 1041 y(c)214
1042 y Fn(\015)15 b Fp(1988,)f(1989,)f(1990,)h(1991,)g(1992)g(F)l(ree)h
(Soft)o(w)o(are)f(F)l(oundation)0 1304 y(Published)j(b)o(y)f(the)f(F)l
(ree)g(Soft)o(w)o(are)f(F)l(oundation)0 1366 y(675)g(Massac)o(h)o
(usetts)g(Av)o(en)o(ue)0 1428 y(Cam)o(bridge,)h(MA)g(02139)f(USA)0
1491 y(Prin)o(ted)i(copies)g(are)f(a)o(v)m(ailable)h(for)f($15)f(eac)o
(h.)0 1553 y(ISBN-1-882114-30-2)0 1690 y(P)o(ermission)f(is)g(gran)o
(ted)f(to)f(mak)o(e)h(and)h(distribute)h(v)o(erbatim)e(copies)h(of)f
(this)h(man)o(ual)g(pro)o(vided)g(the)f(cop)o(yrigh)o(t)0
1752 y(notice)k(and)f(this)h(p)q(ermission)h(notice)e(are)g(preserv)o
(ed)h(on)f(all)h(copies.)0 1889 y(P)o(ermission)f(is)f(gran)o(ted)f(to)
h(cop)o(y)g(and)g(distribute)h(mo)q(di\014ed)h(v)o(ersions)e(of)f(this)
i(man)o(ual)f(under)h(the)f(conditions)0 1951 y(for)h(v)o(erbatim)h
(cop)o(ying,)g(pro)o(vided)h(also)f(that)f(the)h(sections)h(en)o
(titled)g(\\GNU)e(General)i(Public)g(License")h(and)0
2014 y(\\Conditions)e(for)f(Using)i(Bison")f(are)f(included)k(exactly)d
(as)f(in)i(the)f(original,)g(and)g(pro)o(vided)h(that)e(the)g(en)o
(tire)0 2076 y(resulting)h(deriv)o(ed)g(w)o(ork)f(is)g(distributed)i
(under)f(the)f(terms)g(of)g(a)g(p)q(ermission)h(notice)g(iden)o(tical)h
(to)e(this)g(one.)0 2213 y(P)o(ermission)20 b(is)g(gran)o(ted)f(to)g
(cop)o(y)h(and)f(distribute)i(translations)f(of)f(this)h(man)o(ual)f
(in)o(to)h(another)f(language,)0 2275 y(under)d(the)g(ab)q(o)o(v)o(e)f
(conditions)i(for)e(mo)q(di\014ed)i(v)o(ersions,)f(except)g(that)f(the)
g(sections)i(en)o(titled)f(\\GNU)g(General)0 2337 y(Public)24
b(License",)i(\\Conditions)d(for)f(Using)h(Bison")g(and)f(this)h(p)q
(ermission)h(notice)f(ma)o(y)f(b)q(e)h(included)i(in)0
2400 y(translations)15 b(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l(ree)h(Soft)
o(w)o(are)d(F)l(oundation)j(instead)g(of)e(in)i(the)g(original)g
(English.)0 2661 y(Co)o(v)o(er)e(art)h(b)o(y)g(Etienne)h(Suv)m(asa.)p
eop
%%Page: 1 3
1 2 bop 0 -58 a Fp(In)o(tro)q(duction)1679 b(1)0 183
y Fm(In)n(tro)r(duction)62 370 y Fl(Bison)13 b Fp(is)f(a)f
(general-purp)q(ose)i(parser)f(generator)e(that)h(con)o(v)o(erts)g(a)h
(grammar)e(description)j(for)e(an)h(LALR\(1\))0 432 y(con)o(text-free)
21 b(grammar)e(in)o(to)i(a)g(C)g(program)f(to)g(parse)h(that)f
(grammar.)36 b(Once)22 b(y)o(ou)f(are)g(pro\014cien)o(t)h(with)0
495 y(Bison,)15 b(y)o(ou)g(ma)o(y)f(use)h(it)g(to)g(dev)o(elop)h(a)e
(wide)i(range)e(of)h(language)g(parsers,)f(from)g(those)h(used)h(in)f
(simple)i(desk)0 557 y(calculators)f(to)e(complex)i(programming)f
(languages.)62 694 y(Bison)g(is)f(up)o(w)o(ard)g(compatible)h(with)f(Y)
l(acc:)20 b(all)15 b(prop)q(erly-written)g(Y)l(acc)f(grammars)e(ough)o
(t)h(to)h(w)o(ork)f(with)0 756 y(Bison)k(with)f(no)g(c)o(hange.)23
b(An)o(y)o(one)16 b(familiar)h(with)g(Y)l(acc)f(should)h(b)q(e)g(able)g
(to)f(use)g(Bison)h(with)f(little)i(trouble.)0 818 y(Y)l(ou)d(need)h
(to)f(b)q(e)h(\015uen)o(t)f(in)h(C)f(programming)g(in)h(order)f(to)g
(use)g(Bison)h(or)f(to)f(understand)i(this)g(man)o(ual.)62
955 y(W)l(e)g(b)q(egin)h(with)f(tutorial)g(c)o(hapters)f(that)g
(explain)i(the)f(basic)g(concepts)g(of)f(using)i(Bison)f(and)g(sho)o(w)
f(three)0 1018 y(explained)k(examples,)e(eac)o(h)f(building)j(on)e(the)
f(last.)24 b(If)17 b(y)o(ou)f(don't)g(kno)o(w)g(Bison)h(or)f(Y)l(acc,)h
(start)e(b)o(y)h(reading)0 1080 y(these)f(c)o(hapters.)20
b(Reference)d(c)o(hapters)e(follo)o(w)g(whic)o(h)h(describ)q(e)h(sp)q
(eci\014c)g(asp)q(ects)e(of)g(Bison)h(in)g(detail.)62
1217 y(Bison)k(w)o(as)f(written)g(primarily)i(b)o(y)f(Rob)q(ert)f(Corb)
q(ett;)i(Ric)o(hard)f(Stallman)g(made)g(it)g(Y)l(acc-compatible.)0
1279 y(This)c(edition)g(corresp)q(onds)g(to)e(v)o(ersion)i(1.20)e(of)h
(Bison.)p eop
%%Page: 2 4
2 3 bop 0 -58 a Fp(2)1720 b(Bison)16 b(1.20)p eop
%%Page: 3 5
3 4 bop 0 -58 a Fp(Conditions)16 b(for)f(Using)g(Bison)1390
b(3)0 183 y Fm(Conditions)15 b(for)g(Using)f(Bison)62
370 y Fp(Bison)g(grammars)d(can)h(b)q(e)i(used)f(only)g(in)g(programs)f
(that)g(are)g(free)g(soft)o(w)o(are.)18 b(This)13 b(is)g(in)g(con)o
(trast)f(to)g(what)0 432 y(happ)q(ens)k(with)g(the)f(GNU)g(C)g
(compiler)i(and)e(the)g(other)g(GNU)g(programming)g(to)q(ols.)62
569 y(The)22 b(reason)f(Bison)h(is)g(sp)q(ecial)h(is)f(that)f(the)h
(output)f(of)g(the)h(Bison)g(utilit)o(y|the)h(Bison)f(parser)f(\014le|)
0 632 y(con)o(tains)c(a)g(v)o(erbatim)g(cop)o(y)f(of)h(a)g(sizable)h
(piece)h(of)d(Bison,)i(whic)o(h)g(is)f(the)g(co)q(de)h(for)e(the)h
Fk(yyparse)f Fp(function.)0 694 y(\(The)h(actions)h(from)e(y)o(our)h
(grammar)f(are)h(inserted)h(in)o(to)f(this)h(function)g(at)f(one)g(p)q
(oin)o(t,)h(but)g(the)f(rest)g(of)g(the)0 756 y(function)f(is)g(not)f
(c)o(hanged.\))62 893 y(As)k(a)f(result,)h(the)g(Bison)g(parser)f
(\014le)i(is)f(co)o(v)o(ered)f(b)o(y)h(the)g(same)f(cop)o(ying)h
(conditions)h(that)d(co)o(v)o(er)h(Bison)0 955 y(itself)f(and)f(the)f
(rest)h(of)f(the)h(GNU)f(system:)21 b(an)o(y)15 b(program)g(con)o
(taining)h(it)g(has)g(to)f(b)q(e)h(distributed)h(under)g(the)0
1018 y(standard)e(GNU)g(cop)o(ying)g(conditions.)62 1155
y(Occasionally)23 b(p)q(eople)g(who)e(w)o(ould)g(lik)o(e)i(to)d(use)h
(Bison)h(to)f(dev)o(elop)h(proprietary)f(programs)f(complain)0
1217 y(ab)q(out)15 b(this.)62 1354 y(W)l(e)g(don't)f(particularly)i
(sympathize)f(with)g(their)g(complain)o(ts.)20 b(The)15
b(purp)q(ose)g(of)g(the)f(GNU)h(pro)s(ject)f(is)h(to)0
1416 y(promote)f(the)h(righ)o(t)f(to)h(share)f(soft)o(w)o(are)f(and)i
(the)g(practice)g(of)g(sharing)g(soft)o(w)o(are;)e(it)i(is)g(a)f(means)
h(of)f(c)o(hanging)0 1478 y(so)q(ciet)o(y)l(.)23 b(The)16
b(p)q(eople)i(who)e(complain)h(are)f(planning)h(to)f(b)q(e)g(unco)q(op)
q(erativ)o(e)h(to)o(w)o(ard)e(the)h(rest)g(of)f(the)h(w)o(orld;)0
1541 y(wh)o(y)f(should)h(they)f(deserv)o(e)h(our)f(help)h(in)g(doing)g
(so?)62 1678 y(Ho)o(w)o(ev)o(er,)g(it's)h(p)q(ossible)i(that)d(a)h(c)o
(hange)g(in)h(these)f(conditions)h(migh)o(t)f(encourage)g(computer)g
(companies)0 1740 y(to)12 b(use)h(and)h(distribute)g(the)f(GNU)f
(system.)19 b(If)13 b(so,)g(then)g(w)o(e)f(migh)o(t)h(decide)i(to)d(c)o
(hange)h(the)g(terms)f(on)h Fk(yyparse)0 1802 y Fp(as)j(a)h(matter)e
(of)h(the)h(strategy)f(of)g(promoting)g(the)h(righ)o(t)f(to)g(share.)24
b(Suc)o(h)18 b(a)e(c)o(hange)h(w)o(ould)g(b)q(e)g(irrev)o(o)q(cable.)0
1864 y(Since)k(w)o(e)d(stand)h(b)o(y)g(the)g(cop)o(ying)h(p)q
(ermissions)g(w)o(e)f(ha)o(v)o(e)g(announced,)h(w)o(e)f(cannot)g
(withdra)o(w)g(them)g(once)0 1927 y(giv)o(en.)62 2064
y(W)l(e)14 b(m)o(ustn't)e(mak)o(e)h(an)h(irrev)o(o)q(cable)h(c)o(hange)
e(hastily)l(.)21 b(W)l(e)13 b(ha)o(v)o(e)g(to)g(w)o(ait)g(un)o(til)i
(there)f(is)g(a)f(complete)h(GNU)0 2126 y(system)h(and)g(there)g(has)g
(b)q(een)i(time)e(to)g(learn)h(ho)o(w)e(this)i(issue)g(a\013ects)e(its)
i(reception.)p eop
%%Page: 4 6
4 5 bop 0 -58 a Fp(4)1720 b(Bison)16 b(1.20)p eop
%%Page: 5 7
5 6 bop 0 -58 a Fp(GNU)15 b(GENERAL)h(PUBLIC)g(LICENSE)1177
b(5)0 183 y Fm(GNU)16 b(GENERAL)g(PUBLIC)g(LICENSE)769
309 y Fp(V)l(ersion)g(2,)e(June)i(1991)120 438 y(Cop)o(yrigh)o(t)346
437 y(c)334 438 y Fn(\015)f Fp(1989,)f(1991)g(F)l(ree)h(Soft)o(w)o(are)
f(F)l(oundation,)h(Inc.)120 487 y(675)f(Mass)h(Av)o(e,)g(Cam)o(bridge,)
f(MA)h(02139,)f(USA)120 587 y(Ev)o(ery)o(one)h(is)g(p)q(ermitted)h(to)f
(cop)o(y)g(and)g(distribute)i(v)o(erbatim)e(copies)120
637 y(of)g(this)g(license)j(do)q(cumen)o(t,)d(but)g(c)o(hanging)h(it)f
(is)h(not)f(allo)o(w)o(ed.)0 893 y Fo(Pream)n(ble)62
1033 y Fp(The)20 b(licenses)i(for)d(most)g(soft)o(w)o(are)f(are)i
(designed)h(to)e(tak)o(e)h(a)o(w)o(a)o(y)e(y)o(our)h(freedom)h(to)f
(share)h(and)g(c)o(hange)0 1096 y(it.)25 b(By)17 b(con)o(trast,)e(the)i
(GNU)f(General)i(Public)g(License)h(is)e(in)o(tended)h(to)e(guaran)o
(tee)g(y)o(our)g(freedom)h(to)f(share)0 1158 y(and)h(c)o(hange)g(free)f
(soft)o(w)o(are|to)f(mak)o(e)h(sure)h(the)g(soft)o(w)o(are)e(is)i(free)
g(for)f(all)h(its)g(users.)25 b(This)17 b(General)g(Public)0
1220 y(License)d(applies)g(to)e(most)f(of)h(the)h(F)l(ree)f(Soft)o(w)o
(are)f(F)l(oundation's)h(soft)o(w)o(are)f(and)h(to)g(an)o(y)g(other)g
(program)f(whose)0 1282 y(authors)h(commit)h(to)g(using)g(it.)20
b(\(Some)12 b(other)h(F)l(ree)g(Soft)o(w)o(are)e(F)l(oundation)j(soft)o
(w)o(are)d(is)i(co)o(v)o(ered)g(b)o(y)g(the)g(GNU)0 1345
y(Library)j(General)f(Public)i(License)g(instead.\))k(Y)l(ou)15
b(can)g(apply)h(it)g(to)e(y)o(our)h(programs,)f(to)q(o.)62
1485 y(When)20 b(w)o(e)e(sp)q(eak)h(of)g(free)g(soft)o(w)o(are,)e(w)o
(e)i(are)f(referring)i(to)e(freedom,)h(not)g(price.)32
b(Our)19 b(General)g(Public)0 1547 y(Licenses)e(are)e(designed)i(to)d
(mak)o(e)h(sure)g(that)g(y)o(ou)g(ha)o(v)o(e)g(the)g(freedom)g(to)g
(distribute)h(copies)h(of)d(free)i(soft)o(w)o(are)0 1610
y(\(and)g(c)o(harge)f(for)g(this)i(service)g(if)f(y)o(ou)g(wish\),)f
(that)h(y)o(ou)f(receiv)o(e)i(source)f(co)q(de)g(or)g(can)g(get)f(it)h
(if)h(y)o(ou)e(w)o(an)o(t)g(it,)0 1672 y(that)g(y)o(ou)g(can)g(c)o
(hange)h(the)f(soft)o(w)o(are)f(or)h(use)g(pieces)i(of)e(it)h(in)g(new)
g(free)f(programs;)f(and)i(that)e(y)o(ou)h(kno)o(w)g(y)o(ou)0
1734 y(can)g(do)g(these)h(things.)62 1875 y(T)l(o)e(protect)f(y)o(our)g
(righ)o(ts,)g(w)o(e)g(need)h(to)f(mak)o(e)g(restrictions)h(that)f
(forbid)h(an)o(y)o(one)f(to)g(den)o(y)h(y)o(ou)f(these)h(righ)o(ts)0
1937 y(or)f(to)g(ask)h(y)o(ou)f(to)g(surrender)h(the)g(righ)o(ts.)19
b(These)14 b(restrictions)g(translate)g(to)f(certain)h(resp)q
(onsibilitie)q(s)i(for)d(y)o(ou)0 1999 y(if)j(y)o(ou)f(distribute)h
(copies)g(of)f(the)g(soft)o(w)o(are,)e(or)i(if)h(y)o(ou)e(mo)q(dify)i
(it.)62 2140 y(F)l(or)h(example,)g(if)h(y)o(ou)e(distribute)i(copies)g
(of)f(suc)o(h)g(a)f(program,)g(whether)h(gratis)g(or)f(for)g(a)h(fee,)g
(y)o(ou)g(m)o(ust)0 2202 y(giv)o(e)f(the)f(recipien)o(ts)i(all)f(the)f
(righ)o(ts)g(that)g(y)o(ou)g(ha)o(v)o(e.)20 b(Y)l(ou)c(m)o(ust)e(mak)o
(e)h(sure)h(that)e(they)l(,)h(to)q(o,)g(receiv)o(e)h(or)f(can)0
2264 y(get)g(the)g(source)g(co)q(de.)21 b(And)16 b(y)o(ou)e(m)o(ust)h
(sho)o(w)g(them)g(these)g(terms)g(so)g(they)g(kno)o(w)g(their)g(righ)o
(ts.)62 2405 y(W)l(e)g(protect)f(y)o(our)g(righ)o(ts)g(with)h(t)o(w)o
(o)e(steps:)19 b(\(1\))14 b(cop)o(yrigh)o(t)g(the)h(soft)o(w)o(are,)d
(and)j(\(2\))e(o\013er)h(y)o(ou)g(this)h(license)0 2467
y(whic)o(h)h(giv)o(es)f(y)o(ou)g(legal)h(p)q(ermission)h(to)e(cop)o(y)l
(,)f(distribute)j(and/or)e(mo)q(dify)g(the)h(soft)o(w)o(are.)62
2608 y(Also,)e(for)f(eac)o(h)g(author's)g(protection)g(and)h(ours,)f(w)
o(e)g(w)o(an)o(t)g(to)g(mak)o(e)g(certain)g(that)g(ev)o(ery)o(one)g
(understands)0 2670 y(that)k(there)i(is)f(no)g(w)o(arran)o(t)o(y)e(for)
i(this)g(free)g(soft)o(w)o(are.)27 b(If)18 b(the)g(soft)o(w)o(are)f(is)
h(mo)q(di\014ed)i(b)o(y)e(someone)g(else)h(and)p eop
%%Page: 6 8
6 7 bop 0 -58 a Fp(6)1720 b(Bison)16 b(1.20)0 183 y(passed)k(on,)g(w)o
(e)g(w)o(an)o(t)f(its)h(recipien)o(ts)h(to)e(kno)o(w)g(that)g(what)h
(they)f(ha)o(v)o(e)h(is)g(not)f(the)h(original,)i(so)d(that)g(an)o(y)0
246 y(problems)d(in)o(tro)q(duced)g(b)o(y)f(others)g(will)i(not)e
(re\015ect)g(on)g(the)h(original)g(authors')e(reputations.)62
386 y(Finally)l(,)20 b(an)o(y)d(free)g(program)f(is)i(threatened)g
(constan)o(tly)f(b)o(y)g(soft)o(w)o(are)f(paten)o(ts.)26
b(W)l(e)17 b(wish)h(to)f(a)o(v)o(oid)g(the)0 448 y(danger)11
b(that)g(redistributors)h(of)f(a)g(free)g(program)f(will)j(individual)q
(ly)h(obtain)e(paten)o(t)f(licenses,)j(in)e(e\013ect)f(making)0
510 y(the)k(program)g(proprietary)l(.)20 b(T)l(o)15 b(prev)o(en)o(t)g
(this,)h(w)o(e)f(ha)o(v)o(e)g(made)g(it)h(clear)f(that)g(an)o(y)g
(paten)o(t)g(m)o(ust)g(b)q(e)h(licensed)0 572 y(for)f(ev)o(ery)o(one's)
f(free)h(use)h(or)f(not)f(licensed)k(at)c(all.)62 713
y(The)i(precise)g(terms)f(and)g(conditions)i(for)d(cop)o(ying,)h
(distribution)i(and)f(mo)q(di\014cation)g(follo)o(w.)0
958 y Fo(TERMS)f(AND)f(CONDITIONS)f(F)n(OR)i(COPYING,)e(DISTRIBUTION)0
1020 y(AND)h(MODIFICA)-6 b(TION)25 1160 y Fp(0.)29 b(This)22
b(License)g(applies)h(to)d(an)o(y)h(program)f(or)h(other)f(w)o(ork)g
(whic)o(h)i(con)o(tains)f(a)g(notice)h(placed)g(b)o(y)f(the)90
1222 y(cop)o(yrigh)o(t)15 b(holder)h(sa)o(ying)f(it)g(ma)o(y)g(b)q(e)g
(distributed)i(under)f(the)f(terms)g(of)f(this)i(General)g(Public)h
(License.)90 1285 y(The)h(\\Program",)d(b)q(elo)o(w,)j(refers)f(to)g
(an)o(y)g(suc)o(h)h(program)e(or)h(w)o(ork,)f(and)i(a)f(\\w)o(ork)f
(based)i(on)f(the)g(Pro-)90 1347 y(gram")c(means)h(either)h(the)g
(Program)e(or)g(an)o(y)h(deriv)m(ativ)o(e)i(w)o(ork)d(under)i(cop)o
(yrigh)o(t)f(la)o(w:)20 b(that)13 b(is)i(to)f(sa)o(y)l(,)f(a)90
1409 y(w)o(ork)h(con)o(taining)i(the)g(Program)e(or)h(a)g(p)q(ortion)g
(of)g(it,)g(either)h(v)o(erbatim)g(or)e(with)i(mo)q(di\014cations)h
(and/or)90 1471 y(translated)h(in)o(to)g(another)g(language.)29
b(\(Hereinafter,)19 b(translation)f(is)h(included)h(without)f
(limitation)g(in)90 1534 y(the)c(term)g(\\mo)q(di\014cation".\))20
b(Eac)o(h)15 b(licensee)j(is)d(addressed)h(as)f(\\y)o(ou".)90
1611 y(Activities)k(other)e(than)g(cop)o(ying,)g(distribution)i(and)f
(mo)q(di\014cation)g(are)f(not)g(co)o(v)o(ered)g(b)o(y)g(this)h
(License;)90 1674 y(they)f(are)f(outside)h(its)f(scop)q(e.)24
b(The)17 b(act)f(of)g(running)i(the)e(Program)f(is)i(not)f(restricted,)
h(and)g(the)f(output)90 1736 y(from)21 b(the)g(Program)f(is)i(co)o(v)o
(ered)f(only)h(if)f(its)h(con)o(ten)o(ts)e(constitute)i(a)f(w)o(ork)f
(based)i(on)f(the)g(Program)90 1798 y(\(indep)q(enden)o(t)f(of)d(ha)o
(ving)g(b)q(een)i(made)f(b)o(y)f(running)i(the)e(Program\).)26
b(Whether)17 b(that)g(is)h(true)f(dep)q(ends)90 1860
y(on)e(what)g(the)g(Program)f(do)q(es.)25 1938 y(1.)29
b(Y)l(ou)21 b(ma)o(y)e(cop)o(y)h(and)h(distribute)h(v)o(erbatim)e
(copies)h(of)f(the)g(Program's)f(source)h(co)q(de)h(as)f(y)o(ou)g
(receiv)o(e)90 2001 y(it,)e(in)g(an)o(y)g(medium,)g(pro)o(vided)h(that)
e(y)o(ou)g(conspicuously)i(and)f(appropriately)g(publish)i(on)d(eac)o
(h)h(cop)o(y)90 2063 y(an)h(appropriate)f(cop)o(yrigh)o(t)h(notice)g
(and)g(disclaimer)h(of)f(w)o(arran)o(t)o(y;)f(k)o(eep)h(in)o(tact)f
(all)i(the)e(notices)i(that)90 2125 y(refer)c(to)f(this)i(License)g
(and)g(to)e(the)h(absence)h(of)e(an)o(y)h(w)o(arran)o(t)o(y;)e(and)i
(giv)o(e)h(an)o(y)e(other)h(recipien)o(ts)h(of)f(the)90
2187 y(Program)e(a)h(cop)o(y)g(of)f(this)i(License)h(along)e(with)h
(the)f(Program.)90 2265 y(Y)l(ou)h(ma)o(y)f(c)o(harge)g(a)h(fee)g(for)f
(the)h(ph)o(ysical)h(act)e(of)h(transferring)f(a)g(cop)o(y)l(,)h(and)g
(y)o(ou)f(ma)o(y)g(at)h(y)o(our)f(option)90 2328 y(o\013er)f(w)o(arran)
o(t)o(y)g(protection)h(in)h(exc)o(hange)f(for)g(a)g(fee.)25
2405 y(2.)29 b(Y)l(ou)15 b(ma)o(y)e(mo)q(dify)i(y)o(our)f(cop)o(y)g(or)
g(copies)h(of)f(the)g(Program)f(or)h(an)o(y)g(p)q(ortion)g(of)g(it,)h
(th)o(us)f(forming)g(a)g(w)o(ork)90 2468 y(based)g(on)g(the)g(Program,)
f(and)h(cop)o(y)g(and)g(distribute)h(suc)o(h)g(mo)q(di\014cations)g(or)
e(w)o(ork)g(under)i(the)f(terms)f(of)90 2530 y(Section)j(1)f(ab)q(o)o
(v)o(e,)f(pro)o(vided)i(that)f(y)o(ou)g(also)g(meet)g(all)h(of)f(these)
g(conditions:)115 2608 y(a.)29 b(Y)l(ou)13 b(m)o(ust)g(cause)g(the)g
(mo)q(di\014ed)h(\014les)g(to)f(carry)f(prominen)o(t)i(notices)f
(stating)g(that)f(y)o(ou)h(c)o(hanged)g(the)180 2670
y(\014les)j(and)g(the)f(date)g(of)g(an)o(y)f(c)o(hange.)p
eop
%%Page: 7 9
7 8 bop 0 -58 a Fp(GNU)15 b(GENERAL)h(PUBLIC)g(LICENSE)1177
b(7)112 183 y(b.)30 b(Y)l(ou)14 b(m)o(ust)f(cause)h(an)o(y)f(w)o(ork)g
(that)g(y)o(ou)g(distribute)i(or)e(publish,)j(that)d(in)h(whole)g(or)f
(in)i(part)e(con)o(tains)180 246 y(or)g(is)i(deriv)o(ed)f(from)f(the)h
(Program)f(or)g(an)o(y)g(part)g(thereof,)h(to)f(b)q(e)h(licensed)i(as)e
(a)f(whole)i(at)e(no)g(c)o(harge)180 308 y(to)i(all)h(third)f(parties)h
(under)g(the)f(terms)g(of)f(this)i(License.)117 390 y(c.)30
b(If)12 b(the)h(mo)q(di\014ed)g(program)e(normally)i(reads)f(commands)g
(in)o(teractiv)o(ely)h(when)g(run,)f(y)o(ou)g(m)o(ust)g(cause)180
453 y(it,)20 b(when)f(started)g(running)h(for)e(suc)o(h)i(in)o
(teractiv)o(e)f(use)g(in)h(the)g(most)e(ordinary)h(w)o(a)o(y)l(,)g(to)f
(prin)o(t)h(or)180 515 y(displa)o(y)j(an)g(announcemen)o(t)g(including)
i(an)d(appropriate)g(cop)o(yrigh)o(t)g(notice)h(and)g(a)f(notice)h
(that)180 577 y(there)d(is)h(no)g(w)o(arran)o(t)o(y)d(\(or)h(else,)j
(sa)o(ying)f(that)e(y)o(ou)h(pro)o(vide)h(a)f(w)o(arran)o(t)o(y\))e
(and)j(that)e(users)i(ma)o(y)180 639 y(redistribute)d(the)e(program)f
(under)j(these)e(conditions,)i(and)e(telling)i(the)f(user)f(ho)o(w)g
(to)g(view)h(a)f(cop)o(y)180 702 y(of)k(this)i(License.)35
b(\(Exception:)29 b(if)21 b(the)f(Program)e(itself)j(is)f(in)o
(teractiv)o(e)g(but)g(do)q(es)g(not)f(normally)180 764
y(prin)o(t)c(suc)o(h)f(an)g(announcemen)o(t,)h(y)o(our)f(w)o(ork)f
(based)i(on)f(the)g(Program)f(is)i(not)f(required)h(to)e(prin)o(t)i(an)
180 826 y(announcemen)o(t.\))90 929 y(These)20 b(requiremen)o(ts)h
(apply)g(to)e(the)i(mo)q(di\014ed)g(w)o(ork)e(as)h(a)g(whole.)35
b(If)20 b(iden)o(ti\014able)i(sections)f(of)f(that)90
991 y(w)o(ork)d(are)g(not)g(deriv)o(ed)i(from)e(the)h(Program,)f(and)g
(can)h(b)q(e)h(reasonably)f(considered)h(indep)q(enden)o(t)h(and)90
1054 y(separate)15 b(w)o(orks)f(in)j(themselv)o(es,)e(then)h(this)g
(License,)h(and)f(its)f(terms,)g(do)g(not)g(apply)h(to)f(those)g
(sections)90 1116 y(when)j(y)o(ou)g(distribute)h(them)f(as)g(separate)f
(w)o(orks.)28 b(But)18 b(when)g(y)o(ou)g(distribute)h(the)f(same)g
(sections)g(as)90 1178 y(part)d(of)g(a)g(whole)h(whic)o(h)h(is)f(a)f(w)
o(ork)f(based)i(on)g(the)f(Program,)f(the)h(distribution)j(of)d(the)g
(whole)h(m)o(ust)f(b)q(e)90 1240 y(on)g(the)g(terms)f(of)g(this)h
(License,)i(whose)d(p)q(ermissions)j(for)d(other)g(licensees)j(extend)e
(to)g(the)f(en)o(tire)i(whole,)90 1303 y(and)f(th)o(us)g(to)g(eac)o(h)g
(and)h(ev)o(ery)f(part)f(regardless)i(of)e(who)h(wrote)g(it.)90
1385 y(Th)o(us,)g(it)g(is)h(not)f(the)g(in)o(ten)o(t)g(of)g(this)h
(section)g(to)e(claim)i(righ)o(ts)f(or)g(con)o(test)g(y)o(our)f(righ)o
(ts)h(to)g(w)o(ork)f(written)90 1448 y(en)o(tirely)e(b)o(y)f(y)o(ou;)h
(rather,)f(the)g(in)o(ten)o(t)h(is)f(to)g(exercise)h(the)f(righ)o(t)g
(to)g(con)o(trol)g(the)g(distribution)i(of)e(deriv)m(ativ)o(e)90
1510 y(or)k(collectiv)o(e)i(w)o(orks)d(based)h(on)g(the)h(Program.)90
1592 y(In)i(addition,)h(mere)f(aggregation)e(of)h(another)h(w)o(ork)e
(not)h(based)h(on)g(the)g(Program)e(with)i(the)f(Program)90
1655 y(\(or)d(with)h(a)f(w)o(ork)g(based)h(on)g(the)f(Program\))f(on)i
(a)f(v)o(olume)h(of)g(a)f(storage)f(or)i(distribution)h(medium)g(do)q
(es)90 1717 y(not)f(bring)h(the)f(other)g(w)o(ork)f(under)i(the)f(scop)
q(e)h(of)f(this)g(License.)25 1800 y(3.)29 b(Y)l(ou)16
b(ma)o(y)f(cop)o(y)h(and)g(distribute)h(the)f(Program)e(\(or)h(a)h(w)o
(ork)f(based)h(on)g(it,)f(under)i(Section)g(2\))e(in)i(ob)s(ject)90
1862 y(co)q(de)f(or)f(executable)h(form)f(under)h(the)g(terms)e(of)h
(Sections)h(1)f(and)h(2)f(ab)q(o)o(v)o(e)g(pro)o(vided)h(that)f(y)o(ou)
g(also)g(do)90 1924 y(one)g(of)g(the)g(follo)o(wing:)115
2007 y(a.)29 b(Accompan)o(y)12 b(it)g(with)g(the)h(complete)f(corresp)q
(onding)h(mac)o(hine-readable)h(source)e(co)q(de,)h(whic)o(h)g(m)o(ust)
180 2069 y(b)q(e)j(distributed)i(under)e(the)g(terms)g(of)f(Sections)i
(1)e(and)h(2)g(ab)q(o)o(v)o(e)f(on)h(a)f(medium)i(customarily)f(used)
180 2131 y(for)f(soft)o(w)o(are)e(in)o(terc)o(hange;)i(or,)112
2214 y(b.)30 b(Accompan)o(y)12 b(it)g(with)g(a)f(written)h(o\013er,)f
(v)m(alid)i(for)f(at)f(least)g(three)h(y)o(ears,)g(to)f(giv)o(e)h(an)o
(y)f(third)h(part)o(y)l(,)g(for)180 2276 y(a)j(c)o(harge)g(no)g(more)f
(than)h(y)o(our)g(cost)g(of)f(ph)o(ysically)j(p)q(erforming)f(source)f
(distribution,)h(a)f(complete)180 2338 y(mac)o(hine-readable)e(cop)o(y)
f(of)f(the)g(corresp)q(onding)i(source)e(co)q(de,)i(to)e(b)q(e)h
(distributed)h(under)f(the)g(terms)180 2401 y(of)j(Sections)h(1)f(and)g
(2)g(ab)q(o)o(v)o(e)g(on)g(a)g(medium)h(customarily)g(used)f(for)g
(soft)o(w)o(are)e(in)o(terc)o(hange;)j(or,)117 2483 y(c.)30
b(Accompan)o(y)12 b(it)g(with)g(the)h(information)f(y)o(ou)f(receiv)o
(ed)i(as)f(to)f(the)h(o\013er)f(to)h(distribute)h(corresp)q(onding)180
2545 y(source)j(co)q(de.)22 b(\(This)16 b(alternativ)o(e)g(is)g(allo)o
(w)o(ed)g(only)g(for)f(noncommercial)i(distribution)g(and)f(only)g(if)
180 2608 y(y)o(ou)f(receiv)o(ed)h(the)g(program)e(in)i(ob)s(ject)f(co)q
(de)h(or)e(executable)j(form)d(with)i(suc)o(h)g(an)f(o\013er,)f(in)i
(accord)180 2670 y(with)g(Subsection)g(b)f(ab)q(o)o(v)o(e.\))p
eop
%%Page: 8 10
8 9 bop 0 -58 a Fp(8)1720 b(Bison)16 b(1.20)90 183 y(The)f(source)g(co)
q(de)g(for)g(a)f(w)o(ork)g(means)h(the)g(preferred)g(form)f(of)h(the)g
(w)o(ork)e(for)i(making)g(mo)q(di\014cations)h(to)90
246 y(it.)29 b(F)l(or)17 b(an)h(executable)h(w)o(ork,)f(complete)g
(source)g(co)q(de)h(means)f(all)h(the)f(source)g(co)q(de)h(for)e(all)i
(mo)q(dules)90 308 y(it)d(con)o(tains,)g(plus)g(an)o(y)g(asso)q(ciated)
g(in)o(terface)g(de\014nition)h(\014les,)g(plus)f(the)g(scripts)g(used)
h(to)e(con)o(trol)g(com-)90 370 y(pilation)k(and)f(installation)h(of)e
(the)g(executable.)28 b(Ho)o(w)o(ev)o(er,)17 b(as)g(a)g(sp)q(ecial)i
(exception,)g(the)f(source)f(co)q(de)90 432 y(distributed)g(need)f(not)
g(include)i(an)o(ything)d(that)g(is)h(normally)g(distributed)h(\(in)f
(either)h(source)e(or)g(binary)90 495 y(form\))j(with)h(the)g(ma)s(jor)
e(comp)q(onen)o(ts)i(\(compiler,)h(k)o(ernel,)g(and)f(so)f(on\))h(of)f
(the)h(op)q(erating)g(system)f(on)90 557 y(whic)o(h)e(the)f(executable)
i(runs,)e(unless)h(that)f(comp)q(onen)o(t)g(itself)h(accompanies)g(the)
f(executable.)90 639 y(If)d(distribution)i(of)e(executable)h(or)e(ob)s
(ject)h(co)q(de)g(is)h(made)f(b)o(y)g(o\013ering)g(access)g(to)f(cop)o
(y)h(from)f(a)h(designated)90 701 y(place,)18 b(then)g(o\013ering)f
(equiv)m(alen)o(t)i(access)e(to)g(cop)o(y)g(the)g(source)h(co)q(de)f
(from)g(the)g(same)g(place)h(coun)o(ts)f(as)90 764 y(distribution)e(of)
e(the)g(source)g(co)q(de,)h(ev)o(en)g(though)f(third)g(parties)h(are)f
(not)g(comp)q(elled)i(to)e(cop)o(y)g(the)g(source)90
826 y(along)i(with)h(the)f(ob)s(ject)g(co)q(de.)25 908
y(4.)29 b(Y)l(ou)15 b(ma)o(y)e(not)i(cop)o(y)l(,)f(mo)q(dify)l(,)h
(sublicense,)i(or)c(distribute)j(the)f(Program)e(except)i(as)f
(expressly)h(pro)o(vided)90 971 y(under)i(this)g(License.)25
b(An)o(y)16 b(attempt)g(otherwise)g(to)g(cop)o(y)l(,)h(mo)q(dify)l(,)g
(sublicense)h(or)e(distribute)i(the)e(Pro-)90 1033 y(gram)11
b(is)i(v)o(oid,)f(and)g(will)i(automatically)f(terminate)f(y)o(our)f
(righ)o(ts)h(under)g(this)h(License.)20 b(Ho)o(w)o(ev)o(er,)12
b(parties)90 1095 y(who)18 b(ha)o(v)o(e)f(receiv)o(ed)j(copies,)f(or)e
(righ)o(ts,)h(from)g(y)o(ou)f(under)i(this)g(License)h(will)f(not)f(ha)
o(v)o(e)f(their)i(licenses)90 1157 y(terminated)c(so)g(long)h(as)f(suc)
o(h)g(parties)g(remain)h(in)g(full)h(compliance.)25 1240
y(5.)29 b(Y)l(ou)18 b(are)f(not)g(required)i(to)e(accept)g(this)h
(License,)i(since)f(y)o(ou)e(ha)o(v)o(e)g(not)g(signed)i(it.)27
b(Ho)o(w)o(ev)o(er,)16 b(nothing)90 1302 y(else)g(gran)o(ts)d(y)o(ou)i
(p)q(ermission)h(to)e(mo)q(dify)i(or)e(distribute)i(the)f(Program)e(or)
i(its)g(deriv)m(ativ)o(e)h(w)o(orks.)j(These)90 1364
y(actions)f(are)g(prohibited)i(b)o(y)e(la)o(w)g(if)g(y)o(ou)g(do)g(not)
g(accept)g(this)h(License.)30 b(Therefore,)18 b(b)o(y)g(mo)q(difying)h
(or)90 1427 y(distributing)f(the)e(Program)f(\(or)g(an)o(y)h(w)o(ork)g
(based)g(on)g(the)h(Program\),)d(y)o(ou)i(indicate)i(y)o(our)d
(acceptance)90 1489 y(of)e(this)h(License)h(to)e(do)h(so,)f(and)h(all)g
(its)g(terms)f(and)h(conditions)h(for)e(cop)o(ying,)g(distributing)j
(or)d(mo)q(difying)90 1551 y(the)i(Program)f(or)h(w)o(orks)f(based)h
(on)h(it.)25 1634 y(6.)29 b(Eac)o(h)18 b(time)g(y)o(ou)g(redistribute)h
(the)f(Program)f(\(or)g(an)o(y)h(w)o(ork)f(based)h(on)g(the)h
(Program\),)d(the)i(recipien)o(t)90 1696 y(automatically)i(receiv)o(es)
h(a)e(license)j(from)d(the)h(original)h(licensor)g(to)e(cop)o(y)l(,)h
(distribute)h(or)f(mo)q(dify)g(the)90 1758 y(Program)14
b(sub)s(ject)i(to)f(these)h(terms)f(and)h(conditions.)22
b(Y)l(ou)16 b(ma)o(y)f(not)g(imp)q(ose)i(an)o(y)e(further)h
(restrictions)90 1820 y(on)g(the)h(recipien)o(ts')h(exercise)f(of)g
(the)f(righ)o(ts)g(gran)o(ted)g(herein.)26 b(Y)l(ou)16
b(are)h(not)f(resp)q(onsible)i(for)e(enforcing)90 1883
y(compliance)h(b)o(y)e(third)h(parties)f(to)g(this)g(License.)25
1965 y(7.)29 b(If,)15 b(as)g(a)h(consequence)g(of)f(a)g(court)h
(judgmen)o(t)f(or)g(allegation)h(of)f(paten)o(t)g(infringemen)o(t)i(or)
d(for)h(an)o(y)g(other)90 2027 y(reason)g(\(not)f(limited)j(to)e(paten)
o(t)f(issues\),)i(conditions)g(are)f(imp)q(osed)h(on)f(y)o(ou)g
(\(whether)g(b)o(y)g(court)g(order,)90 2089 y(agreemen)o(t)e(or)h
(otherwise\))g(that)f(con)o(tradict)h(the)g(conditions)h(of)e(this)i
(License,)g(they)f(do)g(not)g(excuse)g(y)o(ou)90 2152
y(from)j(the)i(conditions)g(of)f(this)h(License.)30 b(If)19
b(y)o(ou)f(cannot)g(distribute)h(so)f(as)g(to)g(satisfy)g(sim)o
(ultaneously)90 2214 y(y)o(our)13 b(obligations)h(under)g(this)g
(License)h(and)f(an)o(y)f(other)g(p)q(ertinen)o(t)h(obligations,)h
(then)e(as)g(a)h(consequence)90 2276 y(y)o(ou)h(ma)o(y)f(not)h
(distribute)i(the)e(Program)f(at)g(all.)21 b(F)l(or)15
b(example,)g(if)h(a)f(paten)o(t)g(license)i(w)o(ould)e(not)g(p)q(ermit)
90 2339 y(ro)o(y)o(alt)o(y-free)e(redistribution)i(of)f(the)g(Program)e
(b)o(y)i(all)h(those)e(who)h(receiv)o(e)h(copies)f(directly)h(or)f
(indirectly)90 2401 y(through)h(y)o(ou,)f(then)h(the)g(only)h(w)o(a)o
(y)e(y)o(ou)h(could)h(satisfy)e(b)q(oth)i(it)f(and)g(this)g(License)i
(w)o(ould)f(b)q(e)f(to)g(refrain)90 2463 y(en)o(tirely)h(from)f
(distribution)i(of)d(the)i(Program.)90 2545 y(If)c(an)o(y)f(p)q(ortion)
h(of)f(this)h(section)g(is)g(held)g(in)o(v)m(alid)i(or)d(unenforceable)
i(under)f(an)o(y)f(particular)h(circumstance,)90 2608
y(the)j(balance)g(of)f(the)g(section)h(is)g(in)o(tended)h(to)e(apply)h
(and)g(the)f(section)h(as)f(a)h(whole)g(is)g(in)o(tended)g(to)f(apply)
90 2670 y(in)i(other)f(circumstances.)p eop
%%Page: 9 11
9 10 bop 0 -58 a Fp(GNU)15 b(GENERAL)h(PUBLIC)g(LICENSE)1177
b(9)90 183 y(It)18 b(is)g(not)g(the)g(purp)q(ose)g(of)f(this)i(section)
f(to)f(induce)j(y)o(ou)d(to)h(infringe)h(an)o(y)e(paten)o(ts)h(or)f
(other)g(prop)q(ert)o(y)90 246 y(righ)o(t)k(claims)g(or)g(to)f(con)o
(test)g(v)m(alidit)o(y)j(of)d(an)o(y)h(suc)o(h)g(claims;)j(this)d
(section)h(has)f(the)g(sole)g(purp)q(ose)g(of)90 308
y(protecting)h(the)g(in)o(tegrit)o(y)g(of)f(the)h(free)g(soft)o(w)o
(are)e(distribution)k(system,)e(whic)o(h)h(is)f(implemen)o(ted)i(b)o(y)
90 370 y(public)18 b(license)g(practices.)23 b(Man)o(y)15
b(p)q(eople)i(ha)o(v)o(e)f(made)g(generous)g(con)o(tributions)h(to)e
(the)h(wide)h(range)e(of)90 432 y(soft)o(w)o(are)e(distributed)k
(through)e(that)f(system)h(in)h(reliance)h(on)e(consisten)o(t)h
(application)g(of)f(that)g(system;)90 495 y(it)f(is)h(up)f(to)g(the)g
(author/donor)f(to)g(decide)j(if)e(he)h(or)e(she)i(is)f(willing)j(to)c
(distribute)i(soft)o(w)o(are)e(through)g(an)o(y)90 557
y(other)i(system)g(and)g(a)g(licensee)i(cannot)e(imp)q(ose)h(that)f(c)o
(hoice.)90 634 y(This)h(section)f(is)h(in)o(tended)g(to)f(mak)o(e)f
(thoroughly)h(clear)h(what)e(is)i(b)q(eliev)o(ed)h(to)d(b)q(e)i(a)f
(consequence)h(of)f(the)90 697 y(rest)g(of)g(this)g(License.)25
774 y(8.)29 b(If)13 b(the)f(distribution)i(and/or)e(use)g(of)g(the)h
(Program)d(is)j(restricted)g(in)g(certain)g(coun)o(tries)f(either)h(b)o
(y)g(paten)o(ts)90 836 y(or)i(b)o(y)g(cop)o(yrigh)o(ted)g(in)o
(terfaces,)g(the)g(original)h(cop)o(yrigh)o(t)f(holder)h(who)f(places)h
(the)f(Program)f(under)i(this)90 899 y(License)h(ma)o(y)e(add)g(an)g
(explicit)j(geographical)d(distribution)i(limitation)g(excluding)g
(those)e(coun)o(tries,)g(so)90 961 y(that)e(distribution)j(is)e(p)q
(ermitted)g(only)h(in)f(or)g(among)f(coun)o(tries)h(not)f(th)o(us)h
(excluded.)21 b(In)15 b(suc)o(h)f(case,)g(this)90 1023
y(License)j(incorp)q(orates)e(the)h(limitation)g(as)f(if)h(written)f
(in)h(the)f(b)q(o)q(dy)h(of)f(this)h(License.)25 1101
y(9.)29 b(The)14 b(F)l(ree)h(Soft)o(w)o(are)d(F)l(oundation)j(ma)o(y)e
(publish)j(revised)f(and/or)f(new)g(v)o(ersions)h(of)e(the)i(General)f
(Public)90 1163 y(License)k(from)e(time)h(to)f(time.)24
b(Suc)o(h)17 b(new)g(v)o(ersions)f(will)j(b)q(e)e(similar)g(in)h
(spirit)f(to)f(the)h(presen)o(t)f(v)o(ersion,)90 1225
y(but)f(ma)o(y)g(di\013er)g(in)h(detail)h(to)d(address)h(new)h
(problems)g(or)e(concerns.)90 1303 y(Eac)o(h)21 b(v)o(ersion)h(is)h
(giv)o(en)f(a)f(distinguishing)j(v)o(ersion)e(n)o(um)o(b)q(er.)40
b(If)22 b(the)g(Program)e(sp)q(eci\014es)j(a)f(v)o(ersion)90
1365 y(n)o(um)o(b)q(er)e(of)f(this)h(License)h(whic)o(h)g(applies)g(to)
e(it)h(and)g(\\an)o(y)f(later)g(v)o(ersion",)h(y)o(ou)g(ha)o(v)o(e)f
(the)h(option)f(of)90 1427 y(follo)o(wing)j(the)f(terms)f(and)h
(conditions)h(either)g(of)e(that)h(v)o(ersion)g(or)f(of)h(an)o(y)f
(later)h(v)o(ersion)g(published)90 1490 y(b)o(y)d(the)g(F)l(ree)g(Soft)
o(w)o(are)e(F)l(oundation.)29 b(If)18 b(the)g(Program)f(do)q(es)h(not)g
(sp)q(ecify)h(a)f(v)o(ersion)g(n)o(um)o(b)q(er)g(of)g(this)90
1552 y(License,)f(y)o(ou)d(ma)o(y)h(c)o(ho)q(ose)g(an)o(y)g(v)o(ersion)
g(ev)o(er)h(published)h(b)o(y)e(the)h(F)l(ree)f(Soft)o(w)o(are)f(F)l
(oundation.)2 1629 y(10.)29 b(If)17 b(y)o(ou)g(wish)h(to)f(incorp)q
(orate)g(parts)g(of)g(the)g(Program)f(in)o(to)h(other)g(free)g
(programs)f(whose)h(distribution)90 1692 y(conditions)23
b(are)f(di\013eren)o(t,)h(write)f(to)f(the)h(author)f(to)h(ask)f(for)g
(p)q(ermission.)41 b(F)l(or)22 b(soft)o(w)o(are)e(whic)o(h)i(is)90
1754 y(cop)o(yrigh)o(ted)h(b)o(y)f(the)h(F)l(ree)g(Soft)o(w)o(are)e(F)l
(oundation,)j(write)f(to)f(the)g(F)l(ree)h(Soft)o(w)o(are)e(F)l
(oundation;)26 b(w)o(e)90 1816 y(sometimes)13 b(mak)o(e)f(exceptions)i
(for)f(this.)19 b(Our)13 b(decision)i(will)g(b)q(e)e(guided)i(b)o(y)d
(the)h(t)o(w)o(o)f(goals)h(of)f(preserving)90 1878 y(the)i(free)g
(status)g(of)f(all)i(deriv)m(ativ)o(es)h(of)d(our)h(free)g(soft)o(w)o
(are)e(and)j(of)e(promoting)h(the)g(sharing)h(and)f(reuse)g(of)90
1941 y(soft)o(w)o(are)f(generally)l(.)90 2128 y Fo(NO)h(W)-7
b(ARRANTY)2 2234 y Fp(11.)29 b(BECA)o(USE)20 b(THE)h(PR)o(OGRAM)f(IS)i
(LICENSED)e(FREE)h(OF)f(CHAR)o(GE,)g(THERE)h(IS)g(NO)g(W)-5
b(AR-)90 2296 y(RANTY)12 b(F)o(OR)f(THE)g(PR)o(OGRAM,)g(TO)h(THE)f
(EXTENT)f(PERMITTED)h(BY)h(APPLICABLE)g(LA)-5 b(W.)90
2359 y(EX)o(CEPT)23 b(WHEN)g(OTHER)-5 b(WISE)24 b(ST)l(A)l(TED)g(IN)g
(WRITING)f(THE)h(COPYRIGHT)g(HOLDERS)90 2421 y(AND/OR)11
b(OTHER)f(P)l(AR)l(TIES)i(PR)o(O)o(VIDE)e(THE)g(PR)o(OGRAM)h(\\AS)f
(IS")h(WITHOUT)f(W)-5 b(ARRANTY)90 2483 y(OF)14 b(ANY)h(KIND,)f(EITHER)
h(EXPRESSED)f(OR)h(IMPLIED,)f(INCLUDING,)h(BUT)f(NOT)h(LIMITED)90
2545 y(TO,)23 b(THE)g(IMPLIED)h(W)-5 b(ARRANTIES)24 b(OF)f(MER)o(CHANT)
l(ABILITY)i(AND)e(FITNESS)h(F)o(OR)f(A)90 2608 y(P)l(AR)l(TICULAR)e
(PURPOSE.)e(THE)f(ENTIRE)h(RISK)h(AS)f(TO)g(THE)f(QUALITY)i(AND)e(PERF)
o(OR-)90 2670 y(MANCE)h(OF)h(THE)f(PR)o(OGRAM)h(IS)h(WITH)e(YOU.)h
(SHOULD)h(THE)e(PR)o(OGRAM)h(PR)o(O)o(VE)g(DE-)p eop
%%Page: 10 12
10 11 bop 0 -58 a Fp(10)1697 b(Bison)16 b(1.20)90 183
y(FECTIVE,)h(YOU)h(ASSUME)g(THE)g(COST)g(OF)f(ALL)i(NECESSAR)l(Y)g(SER)
-5 b(VICING,)18 b(REP)l(AIR)h(OR)90 246 y(CORRECTION.)2
320 y(12.)29 b(IN)13 b(NO)g(EVENT)f(UNLESS)i(REQUIRED)g(BY)e
(APPLICABLE)i(LA)-5 b(W)13 b(OR)g(A)o(GREED)f(TO)g(IN)h(WRIT-)90
382 y(ING)h(WILL)g(ANY)f(COPYRIGHT)h(HOLDER,)g(OR)g(ANY)g(OTHER)g(P)l
(AR)l(TY)g(WHO)g(MA)l(Y)f(MODIFY)90 445 y(AND/OR)k(REDISTRIBUTE)h(THE)e
(PR)o(OGRAM)h(AS)f(PERMITTED)g(ABO)o(VE,)h(BE)f(LIABLE)i(TO)90
507 y(YOU)13 b(F)o(OR)g(D)o(AMA)o(GES,)f(INCLUDING)h(ANY)g(GENERAL,)g
(SPECIAL,)g(INCIDENT)l(AL)h(OR)g(CON-)90 569 y(SEQUENTIAL)20
b(D)o(AMA)o(GES)d(ARISING)j(OUT)f(OF)f(THE)g(USE)h(OR)g(INABILITY)i(TO)
d(USE)h(THE)90 632 y(PR)o(OGRAM)g(\(INCLUDING)h(BUT)f(NOT)h(LIMITED)f
(TO)g(LOSS)i(OF)e(D)o(A)l(T)l(A)g(OR)h(D)o(A)l(T)l(A)f(BEING)90
694 y(RENDERED)j(INA)o(CCURA)l(TE)h(OR)f(LOSSES)h(SUST)l(AINED)g(BY)f
(YOU)h(OR)f(THIRD)h(P)l(AR)l(TIES)90 756 y(OR)15 b(A)g(F)-5
b(AILURE)15 b(OF)f(THE)h(PR)o(OGRAM)f(TO)h(OPERA)l(TE)g(WITH)f(ANY)h
(OTHER)g(PR)o(OGRAMS\),)90 818 y(EVEN)k(IF)g(SUCH)g(HOLDER)h(OR)f
(OTHER)h(P)l(AR)l(TY)f(HAS)g(BEEN)g(AD)o(VISED)g(OF)g(THE)g(POSSI-)90
881 y(BILITY)e(OF)e(SUCH)g(D)o(AMA)o(GES.)0 1105 y Fo(END)f(OF)h(TERMS)
h(AND)e(CONDITIONS)p eop
%%Page: 11 13
11 12 bop 0 -58 a Fp(GNU)15 b(GENERAL)h(PUBLIC)g(LICENSE)1155
b(11)0 183 y Fo(Ho)n(w)14 b(to)h(Apply)i(These)d(T)-6
b(erms)15 b(to)g(Y)-6 b(our)16 b(New)e(Programs)62 345
y Fp(If)i(y)o(ou)e(dev)o(elop)j(a)d(new)i(program,)d(and)j(y)o(ou)e(w)o
(an)o(t)g(it)i(to)e(b)q(e)i(of)f(the)g(greatest)f(p)q(ossible)j(use)e
(to)g(the)g(public,)0 407 y(the)f(b)q(est)g(w)o(a)o(y)f(to)h(ac)o(hiev)
o(e)g(this)h(is)f(to)g(mak)o(e)f(it)h(free)g(soft)o(w)o(are)f(whic)o(h)
i(ev)o(ery)o(one)e(can)h(redistribute)i(and)e(c)o(hange)0
469 y(under)i(these)f(terms.)62 630 y(T)l(o)f(do)g(so,)g(attac)o(h)f
(the)h(follo)o(wing)h(notices)g(to)f(the)g(program.)k(It)d(is)f(safest)
g(to)f(attac)o(h)g(them)i(to)e(the)h(start)f(of)0 693
y(eac)o(h)k(source)f(\014le)i(to)e(most)g(e\013ectiv)o(ely)h(con)o(v)o
(ey)g(the)f(exclusion)j(of)d(w)o(arran)o(t)o(y;)f(and)h(eac)o(h)h
(\014le)h(should)f(ha)o(v)o(e)g(at)0 755 y(least)e(the)h(\\cop)o(yrigh)
o(t")e(line)j(and)e(a)g(p)q(oin)o(ter)h(to)e(where)i(the)f(full)i
(notice)e(is)h(found.)120 904 y Fl(one)f(line)i(to)e(giv)o(e)g(the)g
(program's)f(name)h(and)h(a)f(brief)g(idea)h(of)f(what)g(it)g(do)q(es.)
120 954 y Fk(Copyright)23 b(\(C\))g(19)p Fl(yy)51 b(name)16
b(of)e(author)120 1053 y Fk(This)23 b(program)g(is)h(free)f(software;)g
(you)g(can)h(redistribute)e(it)h(and/or)h(modify)120
1103 y(it)g(under)f(the)g(terms)g(of)h(the)f(GNU)h(General)f(Public)g
(License)g(as)g(published)g(by)120 1153 y(the)g(Free)h(Software)f
(Foundation;)f(either)h(version)g(2)h(of)f(the)h(License,)e(or)120
1203 y(\(at)h(your)h(option\))f(any)g(later)g(version.)120
1302 y(This)g(program)g(is)h(distributed)e(in)i(the)f(hope)h(that)f(it)
g(will)h(be)f(useful,)120 1352 y(but)g(WITHOUT)g(ANY)h(WARRANTY;)e
(without)h(even)h(the)f(implied)g(warranty)g(of)120 1402
y(MERCHANTABILITY)f(or)h(FITNESS)g(FOR)h(A)f(PARTICULAR)g(PURPOSE.)47
b(See)23 b(the)120 1452 y(GNU)g(General)g(Public)g(License)g(for)h
(more)f(details.)120 1551 y(You)g(should)g(have)h(received)f(a)g(copy)h
(of)f(the)h(GNU)f(General)g(Public)g(License)120 1601
y(along)g(with)g(this)h(program;)f(if)g(not,)g(write)h(to)f(the)h(Free)
f(Software)120 1651 y(Foundation,)f(Inc.,)i(675)f(Mass)g(Ave,)h
(Cambridge,)e(MA)i(02139,)f(USA.)62 1812 y Fp(Also)16
b(add)f(information)h(on)f(ho)o(w)f(to)h(con)o(tact)f(y)o(ou)h(b)o(y)g
(electronic)i(and)e(pap)q(er)h(mail.)62 1974 y(If)11
b(the)f(program)f(is)i(in)o(teractiv)o(e,)g(mak)o(e)f(it)g(output)g(a)g
(short)g(notice)g(lik)o(e)i(this)e(when)h(it)f(starts)f(in)i(an)g(in)o
(teractiv)o(e)0 2036 y(mo)q(de:)120 2185 y Fk(Gnomovision)22
b(version)h(69,)h(Copyright)e(\(C\))i(19)p Fl(yy)j(name)15
b(of)g(author)120 2235 y Fk(Gnomovision)22 b(comes)i(with)f(ABSOLUTELY)
f(NO)i(WARRANTY;)f(for)g(details)120 2285 y(type)g(`show)g(w'.)120
2334 y(This)g(is)h(free)f(software,)g(and)g(you)h(are)f(welcome)g(to)h
(redistribute)e(it)120 2384 y(under)h(certain)g(conditions;)f(type)i
(`show)f(c')h(for)f(details.)62 2545 y Fp(The)e(h)o(yp)q(othetical)g
(commands)f(`)p Fk(show)14 b(w)p Fp(')19 b(and)i(`)p
Fk(show)14 b(c)p Fp(')19 b(should)i(sho)o(w)f(the)g(appropriate)g
(parts)f(of)h(the)0 2608 y(General)11 b(Public)i(License.)20
b(Of)11 b(course,)g(the)g(commands)g(y)o(ou)f(use)h(ma)o(y)f(b)q(e)i
(called)g(something)f(other)f(than)h(`)p Fk(show)0 2670
y(w)p Fp(')k(and)g(`)p Fk(show)f(c)p Fp(';)h(they)g(could)h(ev)o(en)g
(b)q(e)f(mouse-clic)o(ks)i(or)e(men)o(u)g(items|whatev)o(er)h(suits)f
(y)o(our)g(program.)p eop
%%Page: 12 14
12 13 bop 0 -58 a Fp(12)1697 b(Bison)16 b(1.20)62 183
y(Y)l(ou)f(should)g(also)f(get)g(y)o(our)f(emplo)o(y)o(er)h(\(if)h(y)o
(ou)f(w)o(ork)f(as)g(a)h(programmer\))f(or)g(y)o(our)h(sc)o(ho)q(ol,)h
(if)f(an)o(y)l(,)g(to)f(sign)0 246 y(a)i(\\cop)o(yrigh)o(t)f
(disclaimer")j(for)e(the)g(program,)f(if)h(necessary)l(.)21
b(Here)15 b(is)h(a)f(sample;)g(alter)g(the)h(names:)120
370 y Fk(Yoyodyne,)23 b(Inc.,)g(hereby)g(disclaims)f(all)i(copyright)f
(interest)f(in)i(the)f(program)120 420 y(`Gnomovision')f(\(which)h
(makes)g(passes)g(at)h(compilers\))e(written)h(by)h(James)f(Hacker.)120
519 y Fl(signature)15 b(of)g(T)o(y)g(Co)q(on)p Fk(,)23
b(1)h(April)f(1989)120 569 y(Ty)h(Coon,)f(President)f(of)i(Vice)62
706 y Fp(This)16 b(General)g(Public)h(License)g(do)q(es)f(not)f(p)q
(ermit)h(incorp)q(orating)g(y)o(our)e(program)h(in)o(to)g(proprietary)g
(pro-)0 769 y(grams.)21 b(If)16 b(y)o(our)f(program)g(is)h(a)g
(subroutine)h(library)l(,)f(y)o(ou)g(ma)o(y)f(consider)i(it)f(more)f
(useful)i(to)e(p)q(ermit)i(linking)0 831 y(proprietary)i(applications)h
(with)g(the)f(library)l(.)32 b(If)19 b(this)g(is)h(what)e(y)o(ou)h(w)o
(an)o(t)f(to)g(do,)h(use)h(the)f(GNU)f(Library)0 893
y(General)e(Public)h(License)g(instead)e(of)g(this)h(License.)p
eop
%%Page: 13 15
13 14 bop 0 -58 a Fp(Chapter)15 b(1:)k(The)d(Concepts)f(of)g(Bison)1220
b(13)0 183 y Fm(1)41 b(The)15 b(Concepts)g(of)g(Bison)62
376 y Fp(This)h(c)o(hapter)f(in)o(tro)q(duces)h(man)o(y)e(of)h(the)g
(basic)h(concepts)f(without)g(whic)o(h)h(the)f(details)h(of)f(Bison)h
(will)g(not)0 438 y(mak)o(e)e(sense.)20 b(If)14 b(y)o(ou)g(do)g(not)f
(already)i(kno)o(w)e(ho)o(w)h(to)f(use)i(Bison)g(or)e(Y)l(acc,)h(w)o(e)
g(suggest)g(y)o(ou)g(start)e(b)o(y)i(reading)0 500 y(this)i(c)o(hapter)
f(carefully)l(.)0 734 y Fo(1.1)33 b(Languages)14 b(and)h(Con)n(text-F)
-6 b(ree)16 b(Grammars)62 872 y Fp(In)i(order)e(for)h(Bison)g(to)f
(parse)h(a)f(language,)i(it)f(m)o(ust)f(b)q(e)h(describ)q(ed)i(b)o(y)e
(a)g Fl(con)o(text-free)f(grammar)p Fp(.)23 b(This)0
935 y(means)15 b(that)f(y)o(ou)g(sp)q(ecify)i(one)f(or)f(more)g
Fl(syn)o(tactic)h(groupings)i Fp(and)e(giv)o(e)g(rules)g(for)f
(constructing)h(them)g(from)0 997 y(their)j(parts.)26
b(F)l(or)17 b(example,)h(in)h(the)e(C)g(language,)h(one)g(kind)g(of)f
(grouping)h(is)g(called)h(an)e(`expression'.)27 b(One)0
1059 y(rule)16 b(for)f(making)h(an)f(expression)h(migh)o(t)f(b)q(e,)h
(\\An)g(expression)g(can)f(b)q(e)h(made)g(of)f(a)g(min)o(us)h(sign)g
(and)f(another)0 1121 y(expression".)20 b(Another)14
b(w)o(ould)g(b)q(e,)h(\\An)f(expression)h(can)f(b)q(e)h(an)f(in)o
(teger".)19 b(As)14 b(y)o(ou)g(can)g(see,)g(rules)h(are)e(often)0
1184 y(recursiv)o(e,)j(but)f(there)g(m)o(ust)g(b)q(e)h(at)e(least)i
(one)f(rule)h(whic)o(h)g(leads)g(out)f(of)f(the)i(recursion.)62
1322 y(The)h(most)e(common)g(formal)h(system)g(for)f(presen)o(ting)i
(suc)o(h)f(rules)h(for)e(h)o(umans)h(to)f(read)h(is)h
Fl(Bac)o(kus-Naur)0 1384 y(F)l(orm)h Fp(or)g(\\BNF",)f(whic)o(h)j(w)o
(as)d(dev)o(elop)q(ed)k(in)e(order)f(to)g(sp)q(ecify)i(the)f(language)f
(Algol)i(60.)29 b(An)o(y)18 b(grammar)0 1446 y(expressed)g(in)g(BNF)g
(is)g(a)f(con)o(text-free)g(grammar.)25 b(The)17 b(input)i(to)d(Bison)i
(is)g(essen)o(tially)h(mac)o(hine-readable)0 1509 y(BNF.)62
1647 y(Not)j(all)h(con)o(text-free)e(languages)h(can)g(b)q(e)h(handled)
h(b)o(y)e(Bison,)i(only)e(those)g(that)f(are)h(LALR\(1\).)40
b(In)0 1709 y(brief,)16 b(this)h(means)e(that)g(it)i(m)o(ust)e(b)q(e)h
(p)q(ossible)i(to)d(tell)i(ho)o(w)e(to)h(parse)f(an)o(y)h(p)q(ortion)g
(of)f(an)h(input)h(string)f(with)0 1771 y(just)i(a)g(single)i(tok)o(en)
d(of)h(lo)q(ok-ahead.)30 b(Strictly)19 b(sp)q(eaking,)h(that)d(is)i(a)f
(description)i(of)d(an)i(LR\(1\))f(grammar,)0 1833 y(and)j(LALR\(1\))g
(in)o(v)o(olv)o(es)g(additional)h(restrictions)f(that)f(are)h(hard)f
(to)g(explain)j(simply;)h(but)d(it)g(is)g(rare)f(in)0
1896 y(actual)d(practice)h(to)f(\014nd)g(an)g(LR\(1\))g(grammar)f(that)
g(fails)i(to)f(b)q(e)h(LALR\(1\).)26 b(See)17 b(Section)h(5.7)f
([Mysterious)0 1958 y(Reduce/Reduce)h(Con\015icts],)d(page)g(74,)f(for)
h(more)g(information)g(on)g(this.)62 2096 y(In)f(the)f(formal)f
(grammatical)g(rules)i(for)e(a)g(language,)i(eac)o(h)e(kind)i(of)f(syn)
o(tactic)f(unit)i(or)e(grouping)h(is)h(named)0 2158 y(b)o(y)g(a)f
Fl(sym)o(b)q(ol)p Fp(.)20 b(Those)14 b(whic)o(h)h(are)e(built)j(b)o(y)e
(grouping)g(smaller)h(constructs)e(according)h(to)g(grammatical)f
(rules)0 2221 y(are)18 b(called)j Fl(non)o(terminal)e(sym)o(b)q(ols)r
Fp(;)h(those)e(whic)o(h)i(can't)e(b)q(e)h(sub)q(divided)j(are)c(called)
i Fl(terminal)g(sym)o(b)q(ols)g Fp(or)0 2283 y Fl(tok)o(en)e(t)o(yp)q
(es)p Fp(.)31 b(W)l(e)18 b(call)i(a)f(piece)h(of)e(input)i(corresp)q
(onding)f(to)f(a)h(single)h(terminal)f(sym)o(b)q(ol)g(a)g
Fl(tok)o(en)p Fp(,)f(and)h(a)0 2345 y(piece)e(corresp)q(onding)f(to)e
(a)h(single)i(non)o(terminal)f(sym)o(b)q(ol)f(a)g Fl(grouping)p
Fp(.)62 2483 y(W)l(e)i(can)g(use)h(the)f(C)g(language)g(as)f(an)h
(example)h(of)f(what)f(sym)o(b)q(ols,)i(terminal)f(and)h(non)o
(terminal,)f(mean.)0 2545 y(The)11 b(tok)o(ens)f(of)h(C)f(are)h(iden)o
(ti\014ers,)i(constan)o(ts)c(\(n)o(umeric)j(and)f(string\),)g(and)g
(the)g(v)m(arious)g(k)o(eyw)o(ords,)f(arithmetic)0 2608
y(op)q(erators)j(and)h(punctuation)h(marks.)k(So)14 b(the)g(terminal)g
(sym)o(b)q(ols)h(of)e(a)h(grammar)e(for)h(C)h(include)i(`iden)o
(ti\014er',)0 2670 y(`n)o(um)o(b)q(er',)f(`string',)g(plus)h(one)g(sym)
o(b)q(ol)g(for)f(eac)o(h)h(k)o(eyw)o(ord,)e(op)q(erator)h(or)g
(punctuation)h(mark:)21 b(`if)t(',)14 b(`return',)p eop
%%Page: 14 16
14 15 bop 0 -58 a Fp(14)1697 b(Bison)16 b(1.20)0 183
y(`const',)10 b(`static',)h(`in)o(t',)g(`c)o(har',)f(`plus-sign',)i
(`op)q(en-brace',)g(`close-brace',)g(`comma')d(and)i(man)o(y)g(more.)18
b(\(These)0 246 y(tok)o(ens)d(can)g(b)q(e)h(sub)q(divided)i(in)o(to)d
(c)o(haracters,)f(but)h(that)g(is)h(a)f(matter)f(of)g(lexicograph)o(y)l
(,)i(not)f(grammar.\))62 403 y(Here)h(is)f(a)g(simple)i(C)e(function)h
(sub)q(divided)i(in)o(to)d(tok)o(ens:)120 548 y Fk(int)310
b(/*)23 b Fp(k)o(eyw)o(ord)15 b(`in)o(t')23 b Fk(*/)120
597 y(square)g(\(x\))143 b(/*)23 b Fp(iden)o(ti\014er,)17
b(op)q(en-paren,)24 b Fk(*/)502 647 y(/*)f Fp(iden)o(ti\014er,)17
b(close-paren)25 b Fk(*/)239 697 y(int)f(x;)119 b(/*)23
b Fp(k)o(eyw)o(ord)15 b(`in)o(t',)f(iden)o(ti\014er,)j(semicolon)25
b Fk(*/)120 747 y({)358 b(/*)23 b Fp(op)q(en-brace)i
Fk(*/)168 797 y(return)e(x)g(*)h(x;)g(/*)f Fp(k)o(eyw)o(ord)15
b(`return',)f(iden)o(ti\014er,)25 b Fk(*/)502 847 y(/*)e
Fp(asterisk,)15 b(iden)o(ti\014er,)h(semicolon)26 b Fk(*/)120
896 y(})358 b(/*)23 b Fp(close-brace)i Fk(*/)62 1054
y Fp(The)19 b(syn)o(tactic)g(groupings)g(of)f(C)h(include)i(the)e
(expression,)h(the)f(statemen)o(t,)f(the)h(declaration,)h(and)f(the)0
1116 y(function)12 b(de\014nition.)20 b(These)11 b(are)f(represen)o
(ted)i(in)f(the)g(grammar)e(of)i(C)f(b)o(y)h(non)o(terminal)g(sym)o(b)q
(ols)g(`expression',)0 1178 y(`statemen)o(t',)19 b(`declaration')i(and)
f(`function)h(de\014nition'.)36 b(The)21 b(full)h(grammar)c(uses)j
(dozens)g(of)f(additional)0 1240 y(language)i(constructs,)i(eac)o(h)e
(with)h(its)f(o)o(wn)g(non)o(terminal)h(sym)o(b)q(ol,)h(in)f(order)f
(to)g(express)g(the)g(meanings)0 1303 y(of)d(these)h(four.)34
b(The)20 b(example)g(ab)q(o)o(v)o(e)g(is)g(a)f(function)i
(de\014nition;)j(it)c(con)o(tains)g(one)f(declaration,)j(and)e(one)0
1365 y(statemen)o(t.)f(In)d(the)f(statemen)o(t,)f(eac)o(h)h(`)p
Fk(x)p Fp(')f(is)i(an)f(expression)h(and)f(so)g(is)h(`)p
Fk(x)f(*)g(x)p Fp('.)62 1522 y(Eac)o(h)i(non)o(terminal)g(sym)o(b)q(ol)
g(m)o(ust)f(ha)o(v)o(e)g(grammatical)g(rules)h(sho)o(wing)g(ho)o(w)f
(it)h(is)g(made)f(out)h(of)f(simpler)0 1585 y(constructs.)j(F)l(or)12
b(example,)i(one)f(kind)i(of)d(C)h(statemen)o(t)f(is)i(the)f
Fk(return)f Fp(statemen)o(t;)g(this)i(w)o(ould)f(b)q(e)h(describ)q(ed)0
1647 y(with)i(a)e(grammar)g(rule)i(whic)o(h)g(reads)f(informally)i(as)d
(follo)o(ws:)120 1792 y(A)h(`statemen)o(t')f(can)h(b)q(e)h(made)f(of)g
(a)g(`return')f(k)o(eyw)o(ord,)g(an)h(`expression')h(and)f(a)g
(`semicolon'.)0 2044 y(There)g(w)o(ould)h(b)q(e)g(man)o(y)f(other)f
(rules)i(for)f(`statemen)o(t',)e(one)i(for)g(eac)o(h)g(kind)h(of)f
(statemen)o(t)f(in)i(C.)62 2201 y(One)22 b(non)o(terminal)f(sym)o(b)q
(ol)g(m)o(ust)g(b)q(e)g(distinguished)j(as)c(the)h(sp)q(ecial)h(one)f
(whic)o(h)h(de\014nes)g(a)e(complete)0 2264 y(utterance)13
b(in)h(the)g(language.)19 b(It)13 b(is)h(called)h(the)e
Fl(start)f(sym)o(b)q(ol)p Fp(.)20 b(In)14 b(a)f(compiler,)h(this)g
(means)f(a)g(complete)h(input)0 2326 y(program.)33 b(In)20
b(the)g(C)g(language,)g(the)g(non)o(terminal)h(sym)o(b)q(ol)f
(`sequence)h(of)e(de\014nitions)j(and)e(declarations')0
2388 y(pla)o(ys)15 b(this)h(role.)62 2545 y(F)l(or)e(example,)g(`)p
Fk(1)h(+)g(2)p Fp(')f(is)g(a)g(v)m(alid)i(C)e(expression|a)h(v)m(alid)h
(part)d(of)h(a)f(C)h(program|but)g(it)g(is)h(not)f(v)m(alid)h(as)0
2608 y(an)f Fl(en)o(tire)i Fp(C)e(program.)k(In)c(the)g(con)o
(text-free)g(grammar)e(of)h(C,)g(this)h(follo)o(ws)g(from)f(the)h(fact)
f(that)g(`expression')0 2670 y(is)j(not)f(the)g(start)f(sym)o(b)q(ol.)p
eop
%%Page: 15 17
15 16 bop 0 -58 a Fp(Chapter)15 b(1:)k(The)d(Concepts)f(of)g(Bison)1220
b(15)62 183 y(The)22 b(Bison)g(parser)f(reads)h(a)f(sequence)i(of)e
(tok)o(ens)g(as)g(its)g(input,)j(and)e(groups)f(the)h(tok)o(ens)f
(using)h(the)0 246 y(grammar)15 b(rules.)24 b(If)16 b(the)h(input)g(is)
g(v)m(alid,)h(the)e(end)h(result)g(is)g(that)e(the)h(en)o(tire)h(tok)o
(en)f(sequence)i(reduces)f(to)e(a)0 308 y(single)g(grouping)e(whose)g
(sym)o(b)q(ol)h(is)g(the)f(grammar's)e(start)h(sym)o(b)q(ol.)20
b(If)14 b(w)o(e)f(use)g(a)g(grammar)f(for)g(C,)h(the)g(en)o(tire)0
370 y(input)h(m)o(ust)f(b)q(e)h(a)f(`sequence)h(of)e(de\014nitions)j
(and)f(declarations'.)19 b(If)14 b(not,)f(the)g(parser)g(rep)q(orts)g
(a)g(syn)o(tax)f(error.)0 746 y Fo(1.2)33 b(F)-6 b(rom)15
b(F)-6 b(ormal)17 b(Rules)e(to)g(Bison)g(Input)62 900
y Fp(A)k(formal)f(grammar)g(is)h(a)f(mathematical)h(construct.)30
b(T)l(o)19 b(de\014ne)g(the)g(language)g(for)f(Bison,)i(y)o(ou)f(m)o
(ust)0 962 y(write)d(a)g(\014le)h(expressing)g(the)f(grammar)f(in)i
(Bison)f(syn)o(tax:)21 b(a)16 b Fl(Bison)h(grammar)h
Fp(\014le.)23 b(See)17 b(Chapter)f(3)g([Bison)0 1025
y(Grammar)e(Files],)h(page)g(39.)62 1178 y(A)f(non)o(terminal)h(sym)o
(b)q(ol)f(in)h(the)f(formal)g(grammar)e(is)j(represen)o(ted)f(in)h
(Bison)g(input)g(as)e(an)h(iden)o(ti\014er,)i(lik)o(e)0
1241 y(an)f(iden)o(ti\014er)i(in)f(C.)f(By)g(con)o(v)o(en)o(tion,)g(it)
g(should)h(b)q(e)g(in)g(lo)o(w)o(er)f(case,)g(suc)o(h)h(as)e
Fk(expr)p Fp(,)h Fk(stmt)f Fp(or)h Fk(declaration)p Fp(.)62
1395 y(The)g(Bison)g(represen)o(tation)g(for)f(a)g(terminal)i(sym)o(b)q
(ol)f(is)g(also)f(called)i(a)f Fl(tok)o(en)f(t)o(yp)q(e)p
Fp(.)20 b(T)l(ok)o(en)14 b(t)o(yp)q(es)h(as)f(w)o(ell)0
1457 y(can)k(b)q(e)g(represen)o(ted)g(as)g(C-lik)o(e)g(iden)o
(ti\014ers.)29 b(By)18 b(con)o(v)o(en)o(tion,)g(these)g(iden)o
(ti\014ers)h(should)g(b)q(e)f(upp)q(er)h(case)f(to)0
1519 y(distinguish)d(them)d(from)g(non)o(terminals:)20
b(for)12 b(example,)h Fk(INTEGER)p Fp(,)f Fk(IDENTIFIER)p
Fp(,)g Fk(IF)g Fp(or)g Fk(RETURN)p Fp(.)18 b(A)13 b(terminal)0
1581 y(sym)o(b)q(ol)j(that)g(stands)g(for)f(a)h(particular)h(k)o(eyw)o
(ord)e(in)i(the)f(language)h(should)g(b)q(e)g(named)f(after)f(that)h(k)
o(eyw)o(ord)0 1644 y(con)o(v)o(erted)e(to)f(upp)q(er)i(case.)20
b(The)14 b(terminal)h(sym)o(b)q(ol)f Fk(error)f Fp(is)i(reserv)o(ed)f
(for)f(error)g(reco)o(v)o(ery)l(.)19 b(See)c(Section)g(3.2)0
1706 y([Sym)o(b)q(ols],)g(page)g(40.)62 1860 y(A)d(terminal)h(sym)o(b)q
(ol)f(can)g(also)g(b)q(e)h(represen)o(ted)f(as)g(a)f(c)o(haracter)h
(literal,)h(just)f(lik)o(e)h(a)e(C)h(c)o(haracter)f(constan)o(t.)0
1922 y(Y)l(ou)18 b(should)h(do)f(this)h(whenev)o(er)f(a)g(tok)o(en)f
(is)i(just)f(a)f(single)j(c)o(haracter)d(\(paren)o(thesis,)i
(plus-sign,)h(etc.\):)25 b(use)0 1984 y(that)14 b(same)h(c)o(haracter)g
(in)h(a)f(literal)h(as)f(the)g(terminal)h(sym)o(b)q(ol)g(for)e(that)h
(tok)o(en.)62 2138 y(The)f(grammar)e(rules)i(also)g(ha)o(v)o(e)f(an)g
(expression)h(in)h(Bison)f(syn)o(tax.)k(F)l(or)13 b(example,)i(here)e
(is)h(the)g(Bison)g(rule)0 2200 y(for)i(a)g(C)g Fk(return)g
Fp(statemen)o(t.)22 b(The)17 b(semicolon)g(in)g(quotes)f(is)h(a)f
(literal)i(c)o(haracter)e(tok)o(en,)g(represen)o(ting)h(part)0
2263 y(of)d(the)g(C)f(syn)o(tax)h(for)f(the)h(statemen)o(t;)f(the)h
(nak)o(ed)g(semicolon,)h(and)g(the)f(colon,)g(are)g(Bison)g
(punctuation)h(used)0 2325 y(in)h(ev)o(ery)f(rule.)120
2466 y Fk(stmt:)71 b(RETURN)23 b(expr)g(';')311 2516
y(;)0 2670 y Fp(See)16 b(Section)g(3.3)e([Syn)o(tax)h(of)f(Grammar)g
(Rules],)i(page)f(42.)p eop
%%Page: 16 18
16 17 bop 0 -58 a Fp(16)1697 b(Bison)16 b(1.20)0 183
y Fo(1.3)33 b(Seman)n(tic)16 b(V)-6 b(alues)62 328 y
Fp(A)18 b(formal)f(grammar)f(selects)i(tok)o(ens)f(only)h(b)o(y)g
(their)g(classi\014cations:)26 b(for)17 b(example,)h(if)g(a)f(rule)i
(men)o(tions)0 390 y(the)e(terminal)g(sym)o(b)q(ol)f(`in)o(teger)h
(constan)o(t',)e(it)i(means)f(that)g Fl(an)o(y)k Fp(in)o(teger)c
(constan)o(t)g(is)h(grammatically)f(v)m(alid)0 452 y(in)g(that)f(p)q
(osition.)22 b(The)15 b(precise)i(v)m(alue)g(of)e(the)g(constan)o(t)g
(is)h(irrelev)m(an)o(t)g(to)f(ho)o(w)g(to)g(parse)g(the)h(input:)21
b(if)16 b(`)p Fk(x+4)p Fp(')0 515 y(is)g(grammatical)e(then)i(`)p
Fk(x+1)p Fp(')e(or)h(`)p Fk(x+3989)p Fp(')e(is)j(equally)h
(grammatical.)62 659 y(But)c(the)f(precise)h(v)m(alue)h(is)f(v)o(ery)f
(imp)q(ortan)o(t)f(for)h(what)g(the)g(input)h(means)g(once)f(it)h(is)g
(parsed.)19 b(A)12 b(compiler)h(is)0 721 y(useless)i(if)g(it)f(fails)h
(to)e(distinguish)k(b)q(et)o(w)o(een)d(4,)g(1)f(and)i(3989)e(as)g
(constan)o(ts)h(in)g(the)h(program!)j(Therefore,)c(eac)o(h)0
784 y(tok)o(en)i(in)h(a)f(Bison)h(grammar)e(has)h(b)q(oth)g(a)g(tok)o
(en)g(t)o(yp)q(e)h(and)f(a)g Fl(seman)o(tic)g(v)m(alue)p
Fp(.)25 b(See)17 b(Section)g(3.5)e([De\014ning)0 846
y(Language)g(Seman)o(tics],)g(page)g(44,)f(for)h(details.)62
990 y(The)h(tok)o(en)f(t)o(yp)q(e)h(is)g(a)f(terminal)h(sym)o(b)q(ol)g
(de\014ned)h(in)f(the)g(grammar,)d(suc)o(h)j(as)f Fk(INTEGER)p
Fp(,)f Fk(IDENTIFIER)g Fp(or)0 1053 y Fk(',')p Fp(.)22
b(It)17 b(tells)g(ev)o(erything)g(y)o(ou)e(need)i(to)f(kno)o(w)g(to)f
(decide)j(where)f(the)f(tok)o(en)g(ma)o(y)f(v)m(alidly)k(app)q(ear)d
(and)g(ho)o(w)0 1115 y(to)f(group)f(it)i(with)f(other)g(tok)o(ens.)20
b(The)15 b(grammar)f(rules)i(kno)o(w)e(nothing)i(ab)q(out)f(tok)o(ens)g
(except)g(their)h(t)o(yp)q(es.)62 1259 y(The)g(seman)o(tic)f(v)m(alue)i
(has)e(all)h(the)f(rest)g(of)g(the)g(information)h(ab)q(out)f(the)g
(meaning)h(of)f(the)g(tok)o(en,)g(suc)o(h)g(as)0 1322
y(the)e(v)m(alue)h(of)e(an)h(in)o(teger,)g(or)f(the)h(name)g(of)f(an)h
(iden)o(ti\014er.)21 b(\(A)12 b(tok)o(en)h(suc)o(h)g(as)f
Fk(',')h Fp(whic)o(h)g(is)h(just)e(punctuation)0 1384
y(do)q(esn't)j(need)h(to)f(ha)o(v)o(e)f(an)o(y)h(seman)o(tic)h(v)m
(alue.\))62 1529 y(F)l(or)g(example,)h(an)f(input)i(tok)o(en)d(migh)o
(t)i(b)q(e)g(classi\014ed)h(as)d(tok)o(en)h(t)o(yp)q(e)h
Fk(INTEGER)e Fp(and)h(ha)o(v)o(e)g(the)h(seman)o(tic)0
1591 y(v)m(alue)h(4.)26 b(Another)17 b(input)h(tok)o(en)f(migh)o(t)g
(ha)o(v)o(e)f(the)i(same)e(tok)o(en)h(t)o(yp)q(e)g Fk(INTEGER)g
Fp(but)g(v)m(alue)h(3989.)25 b(When)17 b(a)0 1653 y(grammar)c(rule)j
(sa)o(ys)f(that)f Fk(INTEGER)g Fp(is)h(allo)o(w)o(ed,)g(either)h(of)e
(these)i(tok)o(ens)e(is)i(acceptable)g(b)q(ecause)g(eac)o(h)f(is)g(an)0
1715 y Fk(INTEGER)p Fp(.)k(When)c(the)h(parser)f(accepts)g(the)g(tok)o
(en,)g(it)g(k)o(eeps)h(trac)o(k)e(of)h(the)g(tok)o(en's)f(seman)o(tic)i
(v)m(alue.)62 1860 y(Eac)o(h)g(grouping)g(can)g(also)g(ha)o(v)o(e)f(a)h
(seman)o(tic)g(v)m(alue)h(as)e(w)o(ell)i(as)f(its)g(non)o(terminal)g
(sym)o(b)q(ol.)22 b(F)l(or)15 b(example,)0 1922 y(in)j(a)g(calculator,)
g(an)f(expression)i(t)o(ypically)g(has)e(a)g(seman)o(tic)h(v)m(alue)h
(that)e(is)h(a)f(n)o(um)o(b)q(er.)27 b(In)19 b(a)e(compiler)i(for)0
1984 y(a)i(programming)f(language,)j(an)e(expression)h(t)o(ypically)g
(has)f(a)g(seman)o(tic)g(v)m(alue)h(that)f(is)g(a)g(tree)g(structure)0
2047 y(describing)c(the)e(meaning)h(of)f(the)g(expression.)0
2339 y Fo(1.4)33 b(Seman)n(tic)16 b(Actions)62 2483 y
Fp(In)k(order)e(to)g(b)q(e)h(useful,)i(a)d(program)g(m)o(ust)g(do)g
(more)h(than)f(parse)h(input;)i(it)e(m)o(ust)f(also)h(pro)q(duce)g
(some)0 2545 y(output)e(based)g(on)f(the)h(input.)26
b(In)17 b(a)g(Bison)g(grammar,)e(a)i(grammar)e(rule)j(can)e(ha)o(v)o(e)
h(an)f Fl(action)h Fp(made)g(up)g(of)0 2608 y(C)f(statemen)o(ts.)24
b(Eac)o(h)16 b(time)h(the)g(parser)f(recognizes)i(a)e(matc)o(h)g(for)g
(that)g(rule,)h(the)g(action)g(is)g(executed.)25 b(See)0
2670 y(Section)16 b(3.5.3)e([Actions],)g(page)h(45.)p
eop
%%Page: 17 19
17 18 bop 0 -58 a Fp(Chapter)15 b(1:)k(The)d(Concepts)f(of)g(Bison)1220
b(17)62 183 y(Most)21 b(of)g(the)h(time,)h(the)f(purp)q(ose)h(of)e(an)h
(action)f(is)i(to)e(compute)h(the)f(seman)o(tic)h(v)m(alue)h(of)f(the)f
(whole)0 246 y(construct)c(from)f(the)i(seman)o(tic)f(v)m(alues)h(of)f
(its)g(parts.)25 b(F)l(or)17 b(example,)h(supp)q(ose)g(w)o(e)f(ha)o(v)o
(e)g(a)g(rule)h(whic)o(h)g(sa)o(ys)0 308 y(an)d(expression)i(can)e(b)q
(e)h(the)g(sum)f(of)g(t)o(w)o(o)g(expressions.)21 b(When)16
b(the)f(parser)h(recognizes)g(suc)o(h)g(a)f(sum,)g(eac)o(h)g(of)0
370 y(the)i(sub)q(expressions)h(has)e(a)g(seman)o(tic)h(v)m(alue)h
(whic)o(h)f(describ)q(es)h(ho)o(w)e(it)h(w)o(as)f(built)i(up.)24
b(The)17 b(action)g(for)f(this)0 432 y(rule)g(should)g(create)f(a)g
(similar)h(sort)f(of)f(v)m(alue)j(for)d(the)i(newly)g(recognized)g
(larger)f(expression.)62 574 y(F)l(or)g(example,)g(here)h(is)g(a)f
(rule)h(that)e(sa)o(ys)h(an)g(expression)h(can)f(b)q(e)h(the)f(sum)h
(of)e(t)o(w)o(o)g(sub)q(expressions:)120 704 y Fk(expr:)23
b(expr)g('+')h(expr)71 b({)24 b($$)f(=)h($1)g(+)f($3;)h(})311
754 y(;)0 896 y Fp(The)17 b(action)h(sa)o(ys)e(ho)o(w)h(to)g(pro)q
(duce)h(the)f(seman)o(tic)h(v)m(alue)g(of)f(the)g(sum)h(expression)g
(from)e(the)i(v)m(alues)g(of)f(the)0 959 y(t)o(w)o(o)d(sub)q
(expressions.)0 1230 y Fo(1.5)33 b(Bison)15 b(Output:)23
b(the)15 b(P)n(arser)g(File)62 1372 y Fp(When)i(y)o(ou)f(run)h(Bison,)g
(y)o(ou)f(giv)o(e)g(it)h(a)f(Bison)h(grammar)e(\014le)i(as)f(input.)25
b(The)16 b(output)g(is)h(a)f(C)g(source)h(\014le)0 1434
y(that)h(parses)g(the)h(language)g(describ)q(ed)h(b)o(y)f(the)g
(grammar.)28 b(This)19 b(\014le)h(is)f(called)h(a)f Fl(Bison)g(parser)p
Fp(.)30 b(Keep)19 b(in)0 1496 y(mind)e(that)e(the)h(Bison)h(utilit)o(y)
g(and)f(the)g(Bison)g(parser)g(are)f(t)o(w)o(o)g(distinct)i(programs:)j
(the)c(Bison)h(utilit)o(y)g(is)f(a)0 1558 y(program)e(whose)h(output)g
(is)h(the)f(Bison)h(parser)f(that)f(b)q(ecomes)i(part)f(of)g(y)o(our)f
(program.)62 1701 y(The)g(job)g(of)g(the)g(Bison)h(parser)e(is)i(to)e
(group)h(tok)o(ens)f(in)o(to)h(groupings)g(according)h(to)e(the)h
(grammar)f(rules|)0 1763 y(for)h(example,)h(to)f(build)j(iden)o
(ti\014ers)f(and)f(op)q(erators)f(in)o(to)g(expressions.)21
b(As)15 b(it)f(do)q(es)h(this,)g(it)g(runs)g(the)g(actions)0
1825 y(for)g(the)g(grammar)f(rules)i(it)f(uses.)62 1967
y(The)22 b(tok)o(ens)e(come)h(from)f(a)h(function)h(called)h(the)e
Fl(lexical)i(analyzer)i Fp(that)20 b(y)o(ou)h(m)o(ust)f(supply)i(in)g
(some)0 2030 y(fashion)16 b(\(suc)o(h)f(as)g(b)o(y)g(writing)g(it)h(in)
g(C\).)e(The)i(Bison)g(parser)e(calls)j(the)e(lexical)i(analyzer)f(eac)
o(h)f(time)h(it)f(w)o(an)o(ts)0 2092 y(a)e(new)h(tok)o(en.)19
b(It)13 b(do)q(esn't)h(kno)o(w)f(what)f(is)i(\\inside")h(the)f(tok)o
(ens)f(\(though)g(their)h(seman)o(tic)f(v)m(alues)i(ma)o(y)e(re\015ect)
0 2154 y(this\).)19 b(T)o(ypically)c(the)f(lexical)h(analyzer)f(mak)o
(es)f(the)h(tok)o(ens)e(b)o(y)i(parsing)f(c)o(haracters)g(of)g(text,)g
(but)h(Bison)g(do)q(es)0 2216 y(not)h(dep)q(end)i(on)e(this.)20
b(See)c(Section)g(4.2)e([The)h(Lexical)i(Analyzer)f(F)l(unction)g
Fk(yylex)p Fp(],)e(page)h(57.)62 2359 y(The)f(Bison)h(parser)f(\014le)h
(is)f(C)g(co)q(de)g(whic)o(h)h(de\014nes)g(a)f(function)h(named)f
Fk(yyparse)f Fp(whic)o(h)i(implemen)o(ts)g(that)0 2421
y(grammar.)22 b(This)17 b(function)g(do)q(es)f(not)g(mak)o(e)g(a)g
(complete)h(C)f(program:)21 b(y)o(ou)16 b(m)o(ust)g(supply)i(some)e
(additional)0 2483 y(functions.)k(One)14 b(is)f(the)g(lexical)i
(analyzer.)20 b(Another)13 b(is)g(an)g(error-rep)q(orting)g(function)g
(whic)o(h)h(the)f(parser)g(calls)0 2545 y(to)h(rep)q(ort)g(an)h(error.)
k(In)c(addition,)h(a)e(complete)i(C)e(program)g(m)o(ust)g(start)f(with)
i(a)g(function)g(called)h Fk(main)p Fp(;)e(y)o(ou)0 2608
y(ha)o(v)o(e)g(to)f(pro)o(vide)h(this,)h(and)f(arrange)f(for)h(it)g(to)
f(call)i Fk(yyparse)e Fp(or)h(the)g(parser)f(will)j(nev)o(er)e(run.)20
b(See)15 b(Chapter)e(4)0 2670 y([P)o(arser)h(C-Language)h(In)o
(terface],)g(page)g(57.)p eop
%%Page: 18 20
18 19 bop 0 -58 a Fp(18)1697 b(Bison)16 b(1.20)62 183
y(Aside)k(from)f(the)g(tok)o(en)g(t)o(yp)q(e)g(names)g(and)g(the)h(sym)
o(b)q(ols)f(in)h(the)f(actions)h(y)o(ou)e(write,)i(all)g(v)m(ariable)h
(and)0 246 y(function)c(names)g(used)g(in)g(the)g(Bison)g(parser)f
(\014le)i(b)q(egin)g(with)e(`)p Fk(yy)p Fp(')g(or)g(`)p
Fk(YY)p Fp('.)23 b(This)17 b(includes)h(in)o(terface)f(func-)0
308 y(tions)i(suc)o(h)h(as)e(the)i(lexical)h(analyzer)e(function)h
Fk(yylex)p Fp(,)f(the)h(error)e(rep)q(orting)h(function)h
Fk(yyerror)f Fp(and)g(the)0 370 y(parser)d(function)h
Fk(yyparse)e Fp(itself.)24 b(This)16 b(also)g(includes)j(n)o(umerous)d
(iden)o(ti\014ers)i(used)e(for)g(in)o(ternal)h(purp)q(oses.)0
432 y(Therefore,)d(y)o(ou)g(should)i(a)o(v)o(oid)e(using)i(C)e(iden)o
(ti\014ers)i(starting)e(with)h(`)p Fk(yy)p Fp(')f(or)g(`)p
Fk(YY)p Fp(')f(in)j(the)f(Bison)g(grammar)e(\014le)0
495 y(except)j(for)e(the)i(ones)f(de\014ned)h(in)g(this)g(man)o(ual.)0
718 y Fo(1.6)33 b(Stages)14 b(in)i(Using)f(Bison)62 855
y Fp(The)g(actual)g(language-design)g(pro)q(cess)g(using)g(Bison,)g
(from)f(grammar)f(sp)q(eci\014cation)j(to)e(a)g(w)o(orking)g(com-)0
917 y(piler)j(or)d(in)o(terpreter,)h(has)g(these)h(parts:)25
1054 y(1.)29 b(F)l(ormally)15 b(sp)q(ecify)i(the)e(grammar)e(in)j(a)f
(form)f(recognized)j(b)o(y)e(Bison)h(\(see)f(Chapter)f(3)h([Bison)h
(Grammar)90 1116 y(Files],)h(page)f(39\).)21 b(F)l(or)16
b(eac)o(h)g(grammatical)f(rule)i(in)g(the)f(language,)h(describ)q(e)g
(the)g(action)f(that)f(is)i(to)e(b)q(e)90 1178 y(tak)o(en)g(when)g(an)h
(instance)g(of)e(that)h(rule)h(is)f(recognized.)21 b(The)16
b(action)f(is)h(describ)q(ed)h(b)o(y)e(a)g(sequence)h(of)f(C)90
1241 y(statemen)o(ts.)25 1315 y(2.)29 b(W)l(rite)17 b(a)f(lexical)j
(analyzer)e(to)e(pro)q(cess)i(input)h(and)f(pass)f(tok)o(ens)g(to)g
(the)h(parser.)23 b(The)17 b(lexical)h(analyzer)90 1377
y(ma)o(y)12 b(b)q(e)g(written)h(b)o(y)f(hand)h(in)g(C)f(\(see)g
(Section)h(4.2)e([The)i(Lexical)h(Analyzer)f(F)l(unction)g
Fk(yylex)p Fp(],)e(page)h(57\).)90 1440 y(It)j(could)h(also)g(b)q(e)f
(pro)q(duced)i(using)f(Lex,)f(but)g(the)h(use)f(of)g(Lex)h(is)g(not)e
(discussed)j(in)f(this)g(man)o(ual.)25 1514 y(3.)29 b(W)l(rite)15
b(a)g(con)o(trolling)h(function)g(that)f(calls)h(the)f(Bison-pro)q
(duced)j(parser.)25 1589 y(4.)29 b(W)l(rite)15 b(error-rep)q(orting)g
(routines.)62 1738 y(T)l(o)g(turn)g(this)h(source)f(co)q(de)h(as)f
(written)g(in)o(to)g(a)g(runnable)i(program,)c(y)o(ou)i(m)o(ust)g
(follo)o(w)g(these)h(steps:)25 1875 y(1.)29 b(Run)16
b(Bison)g(on)f(the)g(grammar)f(to)h(pro)q(duce)h(the)f(parser.)25
1949 y(2.)29 b(Compile)16 b(the)g(co)q(de)f(output)g(b)o(y)g(Bison,)h
(as)f(w)o(ell)h(as)f(an)o(y)g(other)f(source)i(\014les.)25
2024 y(3.)29 b(Link)16 b(the)g(ob)s(ject)e(\014les)j(to)d(pro)q(duce)i
(the)f(\014nished)i(pro)q(duct.)0 2247 y Fo(1.7)33 b(The)15
b(Ov)n(erall)h(La)n(y)n(out)g(of)e(a)h(Bison)g(Grammar)62
2384 y Fp(The)d(input)h(\014le)g(for)e(the)h(Bison)h(utilit)o(y)g(is)f
(a)g Fl(Bison)g(grammar)f(\014le)p Fp(.)19 b(The)13 b(general)f(form)f
(of)g(a)h(Bison)g(grammar)0 2446 y(\014le)k(is)g(as)f(follo)o(ws:)120
2570 y Fk(\045{)120 2620 y Fl(C)g(declarations)120 2670
y Fk(\045})p eop
%%Page: 19 21
19 20 bop 0 -58 a Fp(Chapter)15 b(1:)k(The)d(Concepts)f(of)g(Bison)1220
b(19)120 233 y Fl(Bison)16 b(declarations)120 333 y Fk(\045\045)120
382 y Fl(Grammar)e(rules)120 432 y Fk(\045\045)120 482
y Fl(Additional)j(C)e(co)q(de)0 619 y Fp(The)i(`)p Fk(\045\045)p
Fp(',)f(`)p Fk(\045{)p Fp(')g(and)h(`)p Fk(\045})p Fp(')f(are)h
(punctuation)g(that)g(app)q(ears)g(in)g(ev)o(ery)g(Bison)h(grammar)d
(\014le)j(to)e(separate)h(the)0 681 y(sections.)62 818
y(The)23 b(C)g(declarations)g(ma)o(y)f(de\014ne)i(t)o(yp)q(es)f(and)g
(v)m(ariables)h(used)f(in)h(the)e(actions.)43 b(Y)l(ou)23
b(can)g(also)g(use)0 881 y(prepro)q(cessor)14 b(commands)g(to)f
(de\014ne)i(macros)e(used)i(there,)f(and)g(use)g Fk(#include)f
Fp(to)g(include)j(header)f(\014les)g(that)0 943 y(do)g(an)o(y)g(of)g
(these)g(things.)62 1080 y(The)j(Bison)g(declarations)h(declare)f(the)g
(names)f(of)h(the)f(terminal)i(and)e(non)o(terminal)i(sym)o(b)q(ols,)f
(and)g(ma)o(y)0 1142 y(also)d(describ)q(e)i(op)q(erator)d(precedence)j
(and)f(the)f(data)g(t)o(yp)q(es)g(of)f(seman)o(tic)i(v)m(alues)g(of)f
(v)m(arious)h(sym)o(b)q(ols.)62 1279 y(The)g(grammar)d(rules)j
(de\014ne)h(ho)o(w)d(to)h(construct)g(eac)o(h)g(non)o(terminal)h(sym)o
(b)q(ol)g(from)e(its)h(parts.)62 1416 y(The)20 b(additional)g(C)f(co)q
(de)h(can)f(con)o(tain)g(an)o(y)g(C)f(co)q(de)i(y)o(ou)f(w)o(an)o(t)f
(to)g(use.)32 b(Often)19 b(the)g(de\014nition)i(of)e(the)0
1478 y(lexical)d(analyzer)f Fk(yylex)f Fp(go)q(es)g(here,)h(plus)g
(subroutines)g(called)h(b)o(y)e(the)h(actions)f(in)i(the)e(grammar)f
(rules.)20 b(In)15 b(a)0 1541 y(simple)i(program,)c(all)j(the)g(rest)f
(of)f(the)i(program)e(can)h(go)g(here.)p eop
%%Page: 20 22
20 21 bop 0 -58 a Fp(20)1697 b(Bison)16 b(1.20)p eop
%%Page: 21 23
21 22 bop 0 -58 a Fp(Chapter)15 b(2:)k(Examples)1482
b(21)0 183 y Fm(2)41 b(Examples)62 379 y Fp(No)o(w)13
b(w)o(e)h(sho)o(w)f(and)h(explain)h(three)f(sample)g(programs)e
(written)i(using)g(Bison:)20 b(a)14 b(rev)o(erse)f(p)q(olish)i
(notation)0 441 y(calculator,)g(an)g(algebraic)h(\(in\014x\))g
(notation)e(calculator,)i(and)f(a)g(m)o(ulti-function)h(calculator.)21
b(All)16 b(three)f(ha)o(v)o(e)0 503 y(b)q(een)22 b(tested)f(under)g
(BSD)g(Unix)h(4.3;)h(eac)o(h)e(pro)q(duces)g(a)g(usable,)i(though)e
(limited,)i(in)o(teractiv)o(e)f(desk-top)0 565 y(calculator.)62
704 y(These)d(examples)h(are)e(simple,)j(but)d(Bison)i(grammars)d(for)h
(real)h(programming)f(languages)h(are)f(written)0 766
y(the)d(same)g(w)o(a)o(y)l(.)0 1006 y Fo(2.1)33 b(Rev)n(erse)15
b(P)n(olish)h(Notation)f(Calculator)62 1145 y Fp(The)23
b(\014rst)f(example)h(is)g(that)f(of)g(a)g(simple)i(double-precision)h
Fl(rev)o(erse)e(p)q(olish)h(notation)e Fp(calculator)h(\(a)0
1207 y(calculator)c(using)g(p)q(ost\014x)f(op)q(erators\).)28
b(This)19 b(example)g(pro)o(vides)g(a)f(go)q(o)q(d)g(starting)g(p)q
(oin)o(t,)h(since)h(op)q(erator)0 1269 y(precedence)c(is)e(not)g(an)g
(issue.)20 b(The)15 b(second)f(example)h(will)h(illustrate)f(ho)o(w)e
(op)q(erator)h(precedence)h(is)g(handled.)62 1408 y(The)20
b(source)f(co)q(de)h(for)e(this)i(calculator)f(is)h(named)f(`)p
Fk(rpcalc.y)p Fp('.)30 b(The)19 b(`)p Fk(.y)p Fp(')f(extension)i(is)g
(a)f(con)o(v)o(en)o(tion)0 1470 y(used)d(for)e(Bison)i(input)g
(\014les.)0 1693 y Fj(2.1.1)30 b(Declarations)15 b(for)g
Fi(rpcalc)62 1832 y Fp(Here)22 b(are)f(the)g(C)g(and)h(Bison)g
(declarations)g(for)e(the)i(rev)o(erse)f(p)q(olish)i(notation)e
(calculator.)38 b(As)21 b(in)i(C,)0 1894 y(commen)o(ts)15
b(are)g(placed)h(b)q(et)o(w)o(een)f(`)p Fk(/*)p Fh(:)8
b(:)g(:)n Fk(*/)p Fp('.)120 2021 y Fk(/*)24 b(Reverse)e(polish)i
(notation)e(calculator.)h(*/)120 2120 y(\045{)120 2170
y(#define)g(YYSTYPE)g(double)120 2220 y(#include)g(<math.h>)120
2270 y(\045})120 2369 y(\045token)g(NUM)120 2469 y(\045\045)h(/*)f
(Grammar)g(rules)g(and)h(actions)f(follow)g(*/)62 2608
y Fp(The)18 b(C)g(declarations)g(section)h(\(see)f(Section)g(3.1.1)e
([The)i(C)g(Declarations)g(Section],)g(page)g(39\))f(con)o(tains)0
2670 y(t)o(w)o(o)d(prepro)q(cessor)h(directiv)o(es.)p
eop
%%Page: 22 24
22 23 bop 0 -58 a Fp(22)1697 b(Bison)16 b(1.20)62 183
y(The)e Fk(#define)f Fp(directiv)o(e)j(de\014nes)f(the)f(macro)f
Fk(YYSTYPE)p Fp(,)g(th)o(us)g(sp)q(ecifying)j(the)e(C)g(data)f(t)o(yp)q
(e)h(for)g(seman)o(tic)0 246 y(v)m(alues)i(of)f(b)q(oth)g(tok)o(ens)g
(and)g(groupings)h(\(see)f(Section)h(3.5.1)d([Data)h(T)o(yp)q(es)h(of)g
(Seman)o(tic)h(V)l(alues],)f(page)g(45\).)0 308 y(The)j(Bison)g(parser)
g(will)h(use)g(whatev)o(er)e(t)o(yp)q(e)h Fk(YYSTYPE)e
Fp(is)j(de\014ned)g(as;)f(if)g(y)o(ou)g(don't)f(de\014ne)i(it,)f
Fk(int)g Fp(is)g(the)0 370 y(default.)i(Because)14 b(w)o(e)f(sp)q
(ecify)i Fk(double)p Fp(,)d(eac)o(h)h(tok)o(en)g(and)h(eac)o(h)f
(expression)h(has)g(an)f(asso)q(ciated)h(v)m(alue,)g(whic)o(h)0
432 y(is)i(a)f(\015oating)g(p)q(oin)o(t)g(n)o(um)o(b)q(er.)62
571 y(The)h Fk(#include)e Fp(directiv)o(e)i(is)g(used)g(to)e(declare)i
(the)g(exp)q(onen)o(tiation)g(function)g Fk(pow)p Fp(.)62
710 y(The)j(second)h(section,)g(Bison)g(declarations,)g(pro)o(vides)f
(information)h(to)e(Bison)i(ab)q(out)e(the)h(tok)o(en)g(t)o(yp)q(es)0
772 y(\(see)d(Section)h(3.1.2)d([The)i(Bison)g(Declarations)g
(Section],)h(page)e(40\).)22 b(Eac)o(h)15 b(terminal)i(sym)o(b)q(ol)f
(that)f(is)i(not)e(a)0 834 y(single-c)o(haracter)h(literal)h(m)o(ust)e
(b)q(e)i(declared)g(here.)k(\(Single-c)o(haracter)c(literals)f
(normally)h(don't)e(need)h(to)f(b)q(e)0 897 y(declared.\))21
b(In)16 b(this)f(example,)h(all)g(the)g(arithmetic)g(op)q(erators)e
(are)h(designated)h(b)o(y)f(single-c)o(haracter)h(literals,)0
959 y(so)d(the)g(only)h(terminal)g(sym)o(b)q(ol)g(that)f(needs)h(to)e
(b)q(e)i(declared)h(is)f Fk(NUM)p Fp(,)f(the)g(tok)o(en)g(t)o(yp)q(e)g
(for)g(n)o(umeric)h(constan)o(ts.)0 1183 y Fj(2.1.2)30
b(Grammar)15 b(Rules)h(for)e Fi(rpcalc)62 1321 y Fp(Here)i(are)f(the)g
(grammar)f(rules)i(for)e(the)h(rev)o(erse)g(p)q(olish)i(notation)e
(calculator.)120 1448 y Fk(input:)95 b(/*)23 b(empty)g(*/)311
1498 y(|)h(input)f(line)120 1547 y(;)120 1647 y(line:)119
b('\\n')311 1697 y(|)24 b(exp)f('\\n')47 b({)24 b(printf)f
(\("\\t\045.10g\\n",)f($1\);)h(})120 1747 y(;)120 1846
y(exp:)143 b(NUM)309 b({)24 b($$)g(=)f($1;)215 b(})311
1896 y(|)24 b(exp)f(exp)h('+')118 b({)24 b($$)g(=)f($1)h(+)g($2;)95
b(})311 1946 y(|)24 b(exp)f(exp)h('-')118 b({)24 b($$)g(=)f($1)h(-)g
($2;)95 b(})311 1996 y(|)24 b(exp)f(exp)h('*')118 b({)24
b($$)g(=)f($1)h(*)g($2;)95 b(})311 2046 y(|)24 b(exp)f(exp)h('/')118
b({)24 b($$)g(=)f($1)h(/)g($2;)95 b(})263 2095 y(/*)24
b(Exponentiation)e(*/)311 2145 y(|)i(exp)f(exp)h('^')118
b({)24 b($$)g(=)f(pow)h(\($1,)f($2\);)h(})263 2195 y(/*)g(Unary)f
(minus)95 b(*/)311 2245 y(|)24 b(exp)f('n')214 b({)24
b($$)g(=)f(-$1;)191 b(})120 2295 y(;)120 2344 y(\045\045)62
2483 y Fp(The)17 b(groupings)g(of)f(the)h(rp)q(calc)h(\\language")e
(de\014ned)i(here)f(are)g(the)f(expression)i(\(giv)o(en)f(the)f(name)h
Fk(exp)p Fp(\),)0 2545 y(the)i(line)h(of)e(input)i(\()p
Fk(line)p Fp(\),)e(and)h(the)g(complete)g(input)h(transcript)f(\()p
Fk(input)p Fp(\).)29 b(Eac)o(h)18 b(of)g(these)h(non)o(terminal)0
2608 y(sym)o(b)q(ols)11 b(has)g(sev)o(eral)g(alternate)g(rules,)h
(joined)g(b)o(y)f(the)g(`)p Fk(|)p Fp(')f(punctuator)g(whic)o(h)i(is)f
(read)g(as)g(\\or".)17 b(The)11 b(follo)o(wing)0 2670
y(sections)16 b(explain)h(what)d(these)i(rules)g(mean.)p
eop
%%Page: 23 25
23 24 bop 0 -58 a Fp(Chapter)15 b(2:)k(Examples)1482
b(23)62 183 y(The)13 b(seman)o(tics)f(of)g(the)g(language)g(is)h
(determined)g(b)o(y)f(the)h(actions)f(tak)o(en)g(when)g(a)g(grouping)h
(is)f(recognized.)0 246 y(The)j(actions)h(are)f(the)g(C)g(co)q(de)h
(that)e(app)q(ears)h(inside)j(braces.)h(See)d(Section)g(3.5.3)e
([Actions],)g(page)i(45.)62 383 y(Y)l(ou)g(m)o(ust)f(sp)q(ecify)h
(these)g(actions)f(in)i(C,)d(but)i(Bison)g(pro)o(vides)g(the)f(means)h
(for)e(passing)i(seman)o(tic)g(v)m(alues)0 445 y(b)q(et)o(w)o(een)k
(the)f(rules.)33 b(In)19 b(eac)o(h)h(action,)g(the)f(pseudo-v)m
(ariable)j Fk($$)c Fp(stands)h(for)g(the)g(seman)o(tic)h(v)m(alue)g
(for)f(the)0 508 y(grouping)i(that)f(the)h(rule)g(is)h(going)e(to)g
(construct.)36 b(Assigning)22 b(a)f(v)m(alue)g(to)g Fk($$)f
Fp(is)h(the)g(main)g(job)g(of)f(most)0 570 y(actions.)g(The)15
b(seman)o(tic)h(v)m(alues)g(of)f(the)g(comp)q(onen)o(ts)g(of)g(the)g
(rule)i(are)d(referred)i(to)e(as)h Fk($1)p Fp(,)g Fk($2)p
Fp(,)f(and)h(so)g(on.)0 783 y Fj(2.1.2.1)30 b(Explanation)15
b(of)g Fi(input)62 921 y Fp(Consider)h(the)f(de\014nition)i(of)e
Fk(input)p Fp(:)120 1046 y Fk(input:)95 b(/*)23 b(empty)g(*/)311
1096 y(|)h(input)f(line)120 1146 y(;)62 1283 y Fp(This)d(de\014nition)h
(reads)e(as)g(follo)o(ws:)28 b(\\A)19 b(complete)h(input)h(is)e(either)
h(an)g(empt)o(y)f(string,)h(or)e(a)h(complete)0 1346
y(input)f(follo)o(w)o(ed)f(b)o(y)f(an)h(input)h(line".)25
b(Notice)17 b(that)f(\\complete)i(input")f(is)g(de\014ned)h(in)g(terms)
e(of)g(itself.)25 b(This)0 1408 y(de\014nition)d(is)e(said)h(to)e(b)q
(e)i Fl(left)g(recursiv)o(e)i Fp(since)e Fk(input)f Fp(app)q(ears)g
(alw)o(a)o(ys)f(as)h(the)g(leftmost)g(sym)o(b)q(ol)g(in)h(the)0
1470 y(sequence.)g(See)16 b(Section)g(3.4)e([Recursiv)o(e)i(Rules],)g
(page)f(43.)62 1608 y(The)h(\014rst)e(alternativ)o(e)h(is)h(empt)o(y)f
(b)q(ecause)h(there)f(are)f(no)h(sym)o(b)q(ols)g(b)q(et)o(w)o(een)h
(the)f(colon)g(and)h(the)f(\014rst)f(`)p Fk(|)p Fp(';)0
1670 y(this)k(means)g(that)f Fk(input)g Fp(can)h(matc)o(h)g(an)g(empt)o
(y)f(string)h(of)f(input)i(\(no)f(tok)o(ens\).)27 b(W)l(e)18
b(write)g(the)g(rules)h(this)0 1732 y(w)o(a)o(y)d(b)q(ecause)h(it)g(is)
g(legitimate)h(to)e(t)o(yp)q(e)h Fk(Ctrl-d)f Fp(righ)o(t)g(after)g(y)o
(ou)g(start)g(the)g(calculator.)25 b(It's)17 b(con)o(v)o(en)o(tional)0
1795 y(to)e(put)g(an)g(empt)o(y)g(alternativ)o(e)g(\014rst)g(and)h
(write)f(the)g(commen)o(t)g(`)p Fk(/*)f(empty)h(*/)p
Fp(')f(in)i(it.)62 1932 y(The)h(second)g(alternate)g(rule)g(\()p
Fk(input)e(line)p Fp(\))g(handles)j(all)g(non)o(trivial)g(input.)25
b(It)17 b(means,)f(\\After)g(reading)0 1995 y(an)o(y)e(n)o(um)o(b)q(er)
g(of)g(lines,)i(read)e(one)g(more)g(line)h(if)g(p)q(ossible.")21
b(The)14 b(left)h(recursion)g(mak)o(es)e(this)i(rule)g(in)o(to)f(a)g
(lo)q(op.)0 2057 y(Since)j(the)e(\014rst)g(alternativ)o(e)g(matc)o(hes)
g(empt)o(y)g(input,)h(the)f(lo)q(op)h(can)f(b)q(e)h(executed)g(zero)f
(or)g(more)g(times.)62 2194 y(The)f(parser)g(function)h
Fk(yyparse)d Fp(con)o(tin)o(ues)j(to)e(pro)q(cess)h(input)h(un)o(til)g
(a)e(grammatical)h(error)f(is)h(seen)h(or)e(the)0 2257
y(lexical)20 b(analyzer)e(sa)o(ys)f(there)g(are)h(no)f(more)h(input)g
(tok)o(ens;)g(w)o(e)g(will)h(arrange)e(for)g(the)g(latter)h(to)f(happ)q
(en)i(at)0 2319 y(end)d(of)f(\014le.)0 2532 y Fj(2.1.2.2)30
b(Explanation)15 b(of)g Fi(line)62 2670 y Fp(No)o(w)g(consider)h(the)f
(de\014nition)i(of)e Fk(line)p Fp(:)p eop
%%Page: 24 26
24 25 bop 0 -58 a Fp(24)1697 b(Bison)16 b(1.20)120 183
y Fk(line:)119 b('\\n')311 233 y(|)24 b(exp)f('\\n')47
b({)24 b(printf)f(\("\\t\045.10g\\n",)f($1\);)h(})120
283 y(;)62 425 y Fp(The)d(\014rst)g(alternativ)o(e)g(is)g(a)f(tok)o(en)
h(whic)o(h)g(is)h(a)e(newline)j(c)o(haracter;)f(this)f(means)g(that)f
(rp)q(calc)i(accepts)0 488 y(a)f(blank)h(line)h(\(and)e(ignores)h(it,)h
(since)f(there)g(is)f(no)h(action\).)35 b(The)20 b(second)h(alternativ)
o(e)g(is)g(an)f(expression)0 550 y(follo)o(w)o(ed)c(b)o(y)f(a)g
(newline.)23 b(This)16 b(is)f(the)h(alternativ)o(e)g(that)e(mak)o(es)h
(rp)q(calc)h(useful.)22 b(The)16 b(seman)o(tic)f(v)m(alue)i(of)e(the)0
612 y Fk(exp)h Fp(grouping)h(is)f(the)h(v)m(alue)h(of)d
Fk($1)i Fp(b)q(ecause)g(the)f Fk(exp)g Fp(in)h(question)g(is)g(the)g
(\014rst)f(sym)o(b)q(ol)g(in)i(the)e(alternativ)o(e.)0
674 y(The)f(action)h(prin)o(ts)f(this)h(v)m(alue,)g(whic)o(h)g(is)g
(the)f(result)h(of)e(the)i(computation)f(the)g(user)g(ask)o(ed)g(for.)
62 817 y(This)g(action)g(is)f(un)o(usual)i(b)q(ecause)f(it)f(do)q(es)h
(not)f(assign)g(a)g(v)m(alue)i(to)d Fk($$)p Fp(.)20 b(As)14
b(a)g(consequence,)h(the)g(seman)o(tic)0 879 y(v)m(alue)j(asso)q
(ciated)f(with)h(the)f Fk(line)f Fp(is)i(uninitialized)i(\(its)d(v)m
(alue)h(will)h(b)q(e)f(unpredictable\).)27 b(This)17
b(w)o(ould)h(b)q(e)f(a)0 941 y(bug)c(if)h(that)e(v)m(alue)j(w)o(ere)e
(ev)o(er)g(used,)h(but)f(w)o(e)g(don't)f(use)i(it:)19
b(once)13 b(rp)q(calc)i(has)e(prin)o(ted)h(the)f(v)m(alue)h(of)f(the)g
(user's)0 1004 y(input)j(line,)h(that)d(v)m(alue)j(is)e(no)g(longer)h
(needed.)0 1260 y Fj(2.1.2.3)30 b(Explanation)15 b(of)g
Fi(expr)62 1403 y Fp(The)h Fk(exp)g Fp(grouping)g(has)g(sev)o(eral)g
(rules,)h(one)f(for)f(eac)o(h)h(kind)h(of)f(expression.)23
b(The)16 b(\014rst)g(rule)h(handles)g(the)0 1465 y(simplest)k
(expressions:)31 b(those)20 b(that)f(are)h(just)g(n)o(um)o(b)q(ers.)35
b(The)21 b(second)g(handles)g(an)f(addition-expression,)0
1527 y(whic)o(h)15 b(lo)q(oks)f(lik)o(e)h(t)o(w)o(o)e(expressions)i
(follo)o(w)o(ed)f(b)o(y)g(a)g(plus-sign.)21 b(The)15
b(third)f(handles)h(subtraction,)f(and)h(so)e(on.)120
1657 y Fk(exp:)143 b(NUM)311 1707 y(|)24 b(exp)f(exp)h('+')118
b({)24 b($$)g(=)f($1)h(+)g($2;)95 b(})311 1757 y(|)24
b(exp)f(exp)h('-')118 b({)24 b($$)g(=)f($1)h(-)g($2;)95
b(})311 1807 y Fh(:)8 b(:)g(:)311 1857 y Fk(;)62 1999
y Fp(W)l(e)20 b(ha)o(v)o(e)g(used)g(`)p Fk(|)p Fp(')f(to)h(join)g(all)h
(the)f(rules)h(for)e Fk(exp)p Fp(,)h(but)h(w)o(e)e(could)i(equally)h(w)
o(ell)e(ha)o(v)o(e)g(written)g(them)0 2061 y(separately:)120
2191 y Fk(exp:)143 b(NUM)23 b(;)120 2241 y(exp:)143 b(exp)23
b(exp)h('+')118 b({)24 b($$)g(=)f($1)h(+)g($2;)95 b(})24
b(;)120 2291 y(exp:)143 b(exp)23 b(exp)h('-')118 b({)24
b($$)g(=)f($1)h(-)g($2;)95 b(})24 b(;)311 2341 y Fh(:)8
b(:)g(:)62 2483 y Fp(Most)13 b(of)h(the)h(rules)g(ha)o(v)o(e)f(actions)
g(that)f(compute)i(the)f(v)m(alue)i(of)d(the)i(expression)g(in)g(terms)
f(of)g(the)g(v)m(alue)h(of)0 2545 y(its)h(parts.)k(F)l(or)14
b(example,)i(in)h(the)e(rule)h(for)f(addition,)h Fk($1)f
Fp(refers)h(to)e(the)i(\014rst)f(comp)q(onen)o(t)g Fk(exp)g
Fp(and)h Fk($2)f Fp(refers)0 2608 y(to)f(the)h(second)g(one.)20
b(The)15 b(third)h(comp)q(onen)o(t,)e Fk('+')p Fp(,)g(has)h(no)g
(meaningful)h(asso)q(ciated)f(seman)o(tic)g(v)m(alue,)h(but)e(if)0
2670 y(it)i(had)f(one)h(y)o(ou)f(could)h(refer)g(to)e(it)i(as)f
Fk($3)p Fp(.)20 b(When)c Fk(yyparse)e Fp(recognizes)j(a)e(sum)g
(expression)h(using)h(this)e(rule,)p eop
%%Page: 25 27
25 26 bop 0 -58 a Fp(Chapter)15 b(2:)k(Examples)1482
b(25)0 183 y(the)18 b(sum)g(of)f(the)h(t)o(w)o(o)f(sub)q(expressions')i
(v)m(alues)g(is)g(pro)q(duced)g(as)e(the)h(v)m(alue)h(of)f(the)g(en)o
(tire)g(expression.)29 b(See)0 246 y(Section)16 b(3.5.3)e([Actions],)g
(page)h(45.)62 388 y(Y)l(ou)j(don't)f(ha)o(v)o(e)g(to)f(giv)o(e)i(an)f
(action)g(for)g(ev)o(ery)g(rule.)27 b(When)18 b(a)f(rule)h(has)f(no)h
(action,)f(Bison)h(b)o(y)f(default)0 450 y(copies)f(the)f(v)m(alue)i
(of)e Fk($1)f Fp(in)o(to)i Fk($$)p Fp(.)j(This)d(is)g(what)e(happ)q
(ens)j(in)f(the)f(\014rst)g(rule)h(\(the)f(one)g(that)g(uses)g
Fk(NUM)p Fp(\).)62 593 y(The)g(formatting)f(sho)o(wn)g(here)h(is)g(the)
g(recommended)g(con)o(v)o(en)o(tion,)g(but)g(Bison)g(do)q(es)g(not)f
(require)i(it.)k(Y)l(ou)0 655 y(can)15 b(add)h(or)e(c)o(hange)i
(whitespace)g(as)f(m)o(uc)o(h)g(as)g(y)o(ou)f(wish.)21
b(F)l(or)14 b(example,)i(this:)120 785 y Fk(exp)71 b(:)24
b(NUM)f(|)h(exp)g(exp)f('+')g({$$)h(=)g($1)f(+)h($2;)f(})h(|)g
Fh(:)8 b(:)g(:)0 928 y Fp(means)15 b(the)g(same)g(thing)h(as)f(this:)
120 1058 y Fk(exp:)143 b(NUM)311 1108 y(|)24 b(exp)f(exp)h('+')95
b({)23 b($$)h(=)g($1)f(+)h($2;)f(})311 1157 y(|)h Fh(:)8
b(:)g(:)0 1300 y Fp(The)15 b(latter,)g(ho)o(w)o(ev)o(er,)f(is)i(m)o(uc)
o(h)f(more)g(readable.)0 1557 y Fj(2.1.3)30 b(The)15
b Fi(rpcalc)g Fj(Lexical)h(Analyzer)62 1700 y Fp(The)g(lexical)i
(analyzer's)d(job)h(is)g(lo)o(w-lev)o(el)h(parsing:)k(con)o(v)o(erting)
15 b(c)o(haracters)g(or)g(sequences)i(of)e(c)o(haracters)0
1762 y(in)o(to)h(tok)o(ens.)22 b(The)16 b(Bison)h(parser)e(gets)h(its)g
(tok)o(ens)f(b)o(y)h(calling)i(the)e(lexical)i(analyzer.)23
b(See)16 b(Section)h(4.2)e([The)0 1825 y(Lexical)i(Analyzer)f(F)l
(unction)g Fk(yylex)p Fp(],)e(page)h(57.)62 1967 y(Only)21
b(a)e(simple)i(lexical)g(analyzer)f(is)g(needed)g(for)f(the)h(RPN)f
(calculator.)33 b(This)20 b(lexical)h(analyzer)f(skips)0
2029 y(blanks)g(and)f(tabs,)g(then)g(reads)g(in)h(n)o(um)o(b)q(ers)f
(as)g Fk(double)f Fp(and)h(returns)g(them)g(as)g Fk(NUM)f
Fp(tok)o(ens.)31 b(An)o(y)19 b(other)0 2092 y(c)o(haracter)g(that)g
(isn't)g(part)g(of)h(a)f(n)o(um)o(b)q(er)h(is)g(a)f(separate)g(tok)o
(en.)33 b(Note)19 b(that)g(the)g(tok)o(en-co)q(de)h(for)f(suc)o(h)h(a)0
2154 y(single-c)o(haracter)c(tok)o(en)f(is)g(the)h(c)o(haracter)e
(itself.)62 2296 y(The)19 b(return)g(v)m(alue)i(of)d(the)h(lexical)i
(analyzer)f(function)f(is)h(a)f(n)o(umeric)g(co)q(de)h(whic)o(h)g
(represen)o(ts)f(a)f(tok)o(en)0 2359 y(t)o(yp)q(e.)i(The)15
b(same)g(text)g(used)g(in)h(Bison)g(rules)g(to)e(stand)h(for)g(this)g
(tok)o(en)g(t)o(yp)q(e)g(is)h(also)f(a)g(C)f(expression)i(for)f(the)0
2421 y(n)o(umeric)g(co)q(de)f(for)g(the)f(t)o(yp)q(e.)20
b(This)14 b(w)o(orks)f(in)i(t)o(w)o(o)e(w)o(a)o(ys.)18
b(If)c(the)g(tok)o(en)f(t)o(yp)q(e)h(is)h(a)e(c)o(haracter)h(literal,)h
(then)f(its)0 2483 y(n)o(umeric)k(co)q(de)g(is)g(the)f(ASCI)q(I)i(co)q
(de)f(for)e(that)h(c)o(haracter;)g(y)o(ou)g(can)h(use)f(the)h(same)f(c)
o(haracter)f(literal)j(in)f(the)0 2545 y(lexical)g(analyzer)f(to)e
(express)h(the)g(n)o(um)o(b)q(er.)23 b(If)16 b(the)g(tok)o(en)g(t)o(yp)
q(e)g(is)h(an)f(iden)o(ti\014er,)h(that)e(iden)o(ti\014er)j(is)f
(de\014ned)0 2608 y(b)o(y)d(Bison)h(as)e(a)h(C)g(macro)f(whose)h
(de\014nition)i(is)f(the)f(appropriate)g(n)o(um)o(b)q(er.)20
b(In)15 b(this)f(example,)h(therefore,)e Fk(NUM)0 2670
y Fp(b)q(ecomes)j(a)f(macro)f(for)h Fk(yylex)f Fp(to)h(use.)p
eop
%%Page: 26 28
26 27 bop 0 -58 a Fp(26)1697 b(Bison)16 b(1.20)62 183
y(The)d(seman)o(tic)g(v)m(alue)i(of)d(the)h(tok)o(en)f(\(if)h(it)h(has)
e(one\))h(is)h(stored)e(in)o(to)h(the)g(global)g(v)m(ariable)i
Fk(yylval)p Fp(,)d(whic)o(h)h(is)0 246 y(where)i(the)f(Bison)h(parser)f
(will)i(lo)q(ok)f(for)f(it.)20 b(\(The)14 b(C)g(data)g(t)o(yp)q(e)g(of)
g Fk(yylval)g Fp(is)h Fk(YYSTYPE)p Fp(,)e(whic)o(h)i(w)o(as)f
(de\014ned)0 308 y(at)h(the)g(b)q(eginning)i(of)e(the)g(grammar;)f(see)
h(Section)h(2.1.1)e([Declarations)h(for)f Fk(rpcalc)p
Fp(],)g(page)h(21.\))62 549 y(A)k(tok)o(en)e(t)o(yp)q(e)i(co)q(de)g(of)
e(zero)i(is)f(returned)h(if)g(the)f(end-of-\014le)i(is)f(encoun)o
(tered.)30 b(\(Bison)18 b(recognizes)h(an)o(y)0 612 y(nonp)q(ositiv)o
(e)d(v)m(alue)h(as)e(indicating)i(the)e(end)h(of)f(the)g(input.\))62
853 y(Here)h(is)f(the)h(co)q(de)g(for)e(the)h(lexical)j(analyzer:)120
1091 y Fk(/*)24 b(Lexical)e(analyzer)h(returns)g(a)h(double)f(floating)
g(point)192 1153 y(number)g(on)g(the)h(stack)f(and)g(the)h(token)f
(NUM,)g(or)h(the)f(ASCII)192 1215 y(character)f(read)i(if)f(not)h(a)f
(number.)47 b(Skips)23 b(all)h(blanks)192 1277 y(and)f(tabs,)g(returns)
g(0)h(for)f(EOF.)h(*/)120 1402 y(#include)f(<ctype.h>)120
1475 y(yylex)g(\(\))120 1537 y({)168 1600 y(int)g(c;)168
1724 y(/*)g(skip)h(white)f(space)47 b(*/)168 1786 y(while)23
b(\(\(c)g(=)h(getchar)f(\(\)\))g(==)h(')g(')f(||)h(c)g(==)f('\\t'\))215
1849 y(;)168 1916 y(/*)g(process)g(numbers)71 b(*/)168
1978 y(if)23 b(\(c)h(==)f('.')h(||)g(isdigit)e(\(c\)\))215
2041 y({)263 2103 y(ungetc)h(\(c,)h(stdin\);)263 2165
y(scanf)f(\("\045lf",)g(&yylval\);)263 2227 y(return)g(NUM;)215
2290 y(})168 2357 y(/*)g(return)g(end-of-file)47 b(*/)168
2419 y(if)23 b(\(c)h(==)f(EOF\))215 2482 y(return)g(0;)168
2544 y(/*)g(return)g(single)g(chars)h(*/)168 2606 y(return)f(c;)120
2668 y(})p eop
%%Page: 27 29
27 28 bop 0 -58 a Fp(Chapter)15 b(2:)k(Examples)1482
b(27)0 183 y Fj(2.1.4)30 b(The)15 b(Con)n(trolling)g(F)-5
b(unction)62 321 y Fp(In)14 b(k)o(eeping)g(with)g(the)f(spirit)i(of)d
(this)i(example,)g(the)g(con)o(trolling)g(function)g(is)g(k)o(ept)f(to)
g(the)g(bare)g(minim)o(um.)0 384 y(The)i(only)h(requiremen)o(t)g(is)g
(that)e(it)i(call)g Fk(yyparse)e Fp(to)h(start)f(the)h(pro)q(cess)g(of)
g(parsing.)120 519 y Fk(main)23 b(\(\))120 581 y({)168
643 y(yyparse)g(\(\);)120 706 y(})0 923 y Fj(2.1.5)30
b(The)15 b(Error)g(Rep)r(orting)f(Routine)62 1061 y Fp(When)20
b Fk(yyparse)f Fp(detects)h(a)f(syn)o(tax)g(error,)g(it)h(calls)h(the)f
(error)f(rep)q(orting)h(function)g Fk(yyerror)f Fp(to)g(prin)o(t)0
1123 y(an)e(error)f(message)g(\(usually)i(but)f(not)f(alw)o(a)o(ys)h
Fk("parse)d(error")p Fp(\).)23 b(It)17 b(is)h(up)f(to)f(the)h
(programmer)f(to)g(supply)0 1186 y Fk(yyerror)g Fp(\(see)h(Chapter)f(4)
h([P)o(arser)f(C-Language)g(In)o(terface],)h(page)g(57\),)f(so)g(here)i
(is)f(the)g(de\014nition)i(w)o(e)d(will)0 1248 y(use:)120
1373 y Fk(#include)23 b(<stdio.h>)120 1498 y(yyerror)g(\(s\))47
b(/*)24 b(Called)f(by)g(yyparse)g(on)h(error)f(*/)239
1560 y(char)h(*s;)120 1623 y({)168 1685 y(printf)f(\("\045s\\n",)g
(s\);)120 1747 y(})62 1878 y Fp(After)d Fk(yyerror)f
Fp(returns,)i(the)f(Bison)g(parser)g(ma)o(y)f(reco)o(v)o(er)h(from)f
(the)h(error)f(and)i(con)o(tin)o(ue)f(parsing)g(if)0
1940 y(the)c(grammar)f(con)o(tains)h(a)f(suitable)j(error)d(rule)i
(\(see)f(Chapter)f(6)h([Error)f(Reco)o(v)o(ery],)g(page)h(77\).)21
b(Otherwise,)0 2002 y Fk(yyparse)12 b Fp(returns)h(nonzero.)19
b(W)l(e)13 b(ha)o(v)o(e)g(not)g(written)g(an)o(y)g(error)f(rules)i(in)g
(this)f(example,)h(so)f(an)o(y)g(in)o(v)m(alid)i(input)0
2065 y(will)i(cause)e(the)h(calculator)f(program)f(to)h(exit.)20
b(This)c(is)g(not)f(clean)h(b)q(eha)o(vior)f(for)g(a)g(real)g
(calculator,)h(but)f(it)g(is)0 2127 y(adequate)g(in)h(the)f(\014rst)g
(example.)0 2345 y Fj(2.1.6)30 b(Running)15 b(Bison)g(to)f(Mak)n(e)i
(the)f(P)n(arser)62 2483 y Fp(Before)f(running)i(Bison)e(to)g(pro)q
(duce)h(a)f(parser,)f(w)o(e)h(need)h(to)f(decide)h(ho)o(w)f(to)g
(arrange)f(all)i(the)f(source)g(co)q(de)0 2545 y(in)g(one)g(or)f(more)g
(source)h(\014les.)20 b(F)l(or)13 b(suc)o(h)h(a)g(simple)h(example,)f
(the)g(easiest)g(thing)g(is)g(to)f(put)g(ev)o(erything)h(in)h(one)0
2608 y(\014le.)21 b(The)15 b(de\014nitions)h(of)e Fk(yylex)p
Fp(,)g Fk(yyerror)g Fp(and)h Fk(main)f Fp(go)g(at)g(the)h(end,)g(in)g
(the)g(\\additional)h(C)e(co)q(de")h(section)0 2670 y(of)g(the)g
(\014le)h(\(see)f(Section)i(1.7)d([The)h(Ov)o(erall)h(La)o(y)o(out)e
(of)h(a)g(Bison)h(Grammar],)d(page)i(18\).)p eop
%%Page: 28 30
28 29 bop 0 -58 a Fp(28)1697 b(Bison)16 b(1.20)62 183
y(F)l(or)i(a)f(large)h(pro)s(ject,)g(y)o(ou)f(w)o(ould)h(probably)h(ha)
o(v)o(e)e(sev)o(eral)h(source)g(\014les,)i(and)e(use)g
Fk(make)f Fp(to)g(arrange)h(to)0 246 y(recompile)f(them.)62
384 y(With)g(all)h(the)f(source)g(in)h(a)f(single)h(\014le,)g(y)o(ou)e
(use)i(the)f(follo)o(wing)g(command)g(to)f(con)o(v)o(ert)h(it)g(in)o
(to)g(a)f(parser)0 446 y(\014le:)120 573 y Fk(bison)23
b Fl(\014le)p 323 573 14 2 v 18 w(name)p Fk(.y)0 711
y Fp(In)15 b(this)g(example)h(the)e(\014le)i(w)o(as)d(called)k(`)p
Fk(rpcalc.y)p Fp(')12 b(\(for)i(\\Rev)o(erse)h(P)o(olish)g
(CALCulator"\).)k(Bison)c(pro)q(duces)0 774 y(a)h(\014le)i(named)f(`)p
Fl(\014le)p 335 774 V 17 w(name)p Fk(.tab.c)p Fp(',)f(remo)o(ving)g
(the)h(`)p Fk(.y)p Fp(')f(from)g(the)h(original)h(\014le)f(name.)25
b(The)17 b(\014le)g(output)g(b)o(y)0 836 y(Bison)k(con)o(tains)e(the)h
(source)g(co)q(de)h(for)e Fk(yyparse)p Fp(.)33 b(The)20
b(additional)h(functions)g(in)g(the)f(input)g(\014le)h(\()p
Fk(yylex)p Fp(,)0 898 y Fk(yyerror)14 b Fp(and)i Fk(main)p
Fp(\))e(are)h(copied)h(v)o(erbatim)f(to)g(the)g(output.)0
1121 y Fj(2.1.7)30 b(Compiling)15 b(the)g(P)n(arser)h(File)62
1260 y Fp(Here)g(is)f(ho)o(w)g(to)g(compile)h(and)g(run)f(the)g(parser)
g(\014le:)120 1394 y Fk(#)24 b Fp(List)16 b(\014les)g(in)g(curren)o(t)f
(directory)l(.)120 1457 y Fk(\045)24 b(ls)120 1519 y(rpcalc.tab.c)46
b(rpcalc.y)120 1592 y(#)24 b Fp(Compile)16 b(the)f(Bison)h(parser.)120
1654 y Fk(#)24 b Fp(`)p Fk(-lm)p Fp(')14 b(tells)i(compiler)g(to)f
(searc)o(h)g(math)g(library)h(for)e Fk(pow)p Fp(.)120
1717 y Fk(\045)24 b(cc)f(rpcalc.tab.c)g(-lm)g(-o)h(rpcalc)120
1790 y(#)g Fp(List)16 b(\014les)g(again.)120 1852 y Fk(\045)24
b(ls)120 1914 y(rpcalc)47 b(rpcalc.tab.c)f(rpcalc.y)62
2046 y Fp(The)16 b(\014le)g(`)p Fk(rpcalc)p Fp(')e(no)o(w)g(con)o
(tains)h(the)h(executable)g(co)q(de.)21 b(Here)15 b(is)h(an)f(example)h
(session)g(using)g Fk(rpcalc)p Fp(.)120 2172 y Fk(\045)24
b(rpcalc)120 2222 y(4)g(9)f(+)120 2271 y(13)120 2321
y(3)h(7)f(+)h(3)g(4)g(5)f(*+-)120 2371 y(-13)120 2421
y(3)h(7)f(+)h(3)g(4)g(5)f(*)h(+)g(-)g(n)333 b Fp(Note)15
b(the)h(unary)f(min)o(us,)g(`)p Fk(n)p Fp(')120 2471
y Fk(13)120 2521 y(5)24 b(6)f(/)h(4)g(n)g(+)120 2570
y(-3.166666667)120 2620 y(3)g(4)f(^)668 b Fp(Exp)q(onen)o(tiation)120
2670 y Fk(81)p eop
%%Page: 29 31
29 30 bop 0 -58 a Fp(Chapter)15 b(2:)k(Examples)1482
b(29)120 183 y Fk(^D)739 b Fp(End-of-\014le)17 b(indicator)120
233 y Fk(\045)0 492 y Fo(2.2)33 b(In\014x)16 b(Notation)f(Calculator:)
23 b Fg(calc)62 632 y Fp(W)l(e)17 b(no)o(w)f(mo)q(dify)i(rp)q(calc)f
(to)f(handle)i(in\014x)g(op)q(erators)e(instead)h(of)f(p)q(ost\014x.)25
b(In\014x)17 b(notation)g(in)o(v)o(olv)o(es)g(the)0 695
y(concept)d(of)f(op)q(erator)g(precedence)j(and)d(the)h(need)h(for)e
(paren)o(theses)h(nested)g(to)f(arbitrary)g(depth.)20
b(Here)14 b(is)g(the)0 757 y(Bison)i(co)q(de)g(for)e(`)p
Fk(calc.y)p Fp(',)f(an)j(in\014x)g(desk-top)f(calculator.)120
885 y Fk(/*)24 b(Infix)f(notation)g(calculator--calc)e(*/)120
985 y(\045{)120 1035 y(#define)i(YYSTYPE)g(double)120
1085 y(#include)g(<math.h>)120 1134 y(\045})120 1234
y(/*)h(BISON)f(Declarations)f(*/)120 1284 y(\045token)h(NUM)120
1334 y(\045left)g('-')h('+')120 1383 y(\045left)f('*')h('/')120
1433 y(\045left)f(NEG)119 b(/*)24 b(negation--unary)d(minus)j(*/)120
1483 y(\045right)f('^')95 b(/*)24 b(exponentiation)189
b(*/)120 1583 y(/*)24 b(Grammar)e(follows)h(*/)120 1633
y(\045\045)120 1682 y(input:)95 b(/*)23 b(empty)g(string)g(*/)311
1732 y(|)h(input)f(line)120 1782 y(;)120 1882 y(line:)119
b('\\n')311 1931 y(|)24 b(exp)f('\\n')47 b({)24 b(printf)f
(\("\\t\045.10g\\n",)f($1\);)h(})120 1981 y(;)120 2081
y(exp:)143 b(NUM)381 b({)24 b($$)f(=)h($1;)214 b(})311
2131 y(|)24 b(exp)f('+')h(exp)190 b({)24 b($$)f(=)h($1)g(+)f($3;)95
b(})311 2180 y(|)24 b(exp)f('-')h(exp)190 b({)24 b($$)f(=)h($1)g(-)f
($3;)95 b(})311 2230 y(|)24 b(exp)f('*')h(exp)190 b({)24
b($$)f(=)h($1)g(*)f($3;)95 b(})311 2280 y(|)24 b(exp)f('/')h(exp)190
b({)24 b($$)f(=)h($1)g(/)f($3;)95 b(})311 2330 y(|)24
b('-')f(exp)47 b(\045prec)24 b(NEG)f({)h($$)f(=)h(-$2;)190
b(})311 2380 y(|)24 b(exp)f('^')h(exp)190 b({)24 b($$)f(=)h(pow)g
(\($1,)f($3\);)g(})311 2430 y(|)h('\(')f(exp)h('\)')190
b({)24 b($$)f(=)h($2;)214 b(})120 2479 y(;)120 2529 y(\045\045)0
2670 y Fp(The)15 b(functions)h Fk(yylex)p Fp(,)e Fk(yyerror)h
Fp(and)g Fk(main)g Fp(can)g(b)q(e)h(the)f(same)g(as)g(b)q(efore.)p
eop
%%Page: 30 32
30 31 bop 0 -58 a Fp(30)1697 b(Bison)16 b(1.20)62 183
y(There)g(are)f(t)o(w)o(o)e(imp)q(ortan)o(t)i(new)h(features)e(sho)o
(wn)h(in)h(this)g(co)q(de.)62 333 y(In)i(the)g(second)g(section)g
(\(Bison)g(declarations\),)h Fk(\045left)e Fp(declares)h(tok)o(en)f(t)o
(yp)q(es)h(and)g(sa)o(ys)e(they)i(are)f(left-)0 396 y(asso)q(ciativ)o
(e)h(op)q(erators.)28 b(The)19 b(declarations)g Fk(\045left)e
Fp(and)h Fk(\045right)g Fp(\(righ)o(t)f(asso)q(ciativit)o(y\))i(tak)o
(e)e(the)h(place)h(of)0 458 y Fk(\045token)13 b Fp(whic)o(h)i(is)f
(used)g(to)g(declare)g(a)g(tok)o(en)f(t)o(yp)q(e)h(name)g(without)g
(asso)q(ciativit)o(y)l(.)20 b(\(These)14 b(tok)o(ens)f(are)g(single-)0
520 y(c)o(haracter)h(literals,)i(whic)o(h)g(ordinarily)g(don't)e(need)i
(to)e(b)q(e)i(declared.)21 b(W)l(e)15 b(declare)g(them)g(here)g(to)g
(sp)q(ecify)h(the)0 582 y(asso)q(ciativit)o(y)l(.\))62
733 y(Op)q(erator)22 b(precedence)i(is)f(determined)h(b)o(y)e(the)g
(line)i(ordering)f(of)f(the)g(declarations;)k(the)d(higher)g(the)0
795 y(line)d(n)o(um)o(b)q(er)e(of)g(the)g(declaration)h(\(lo)o(w)o(er)f
(on)g(the)g(page)g(or)g(screen\),)g(the)h(higher)g(the)f(precedence.)30
b(Hence,)0 857 y(exp)q(onen)o(tiation)16 b(has)f(the)g(highest)g
(precedence,)h(unary)f(min)o(us)h(\()p Fk(NEG)p Fp(\))d(is)j(next,)e
(follo)o(w)o(ed)h(b)o(y)g(`)p Fk(*)p Fp(')f(and)h(`)p
Fk(/)p Fp(',)f(and)0 919 y(so)h(on.)20 b(See)15 b(Section)i(5.3)d([Op)q
(erator)g(Precedence],)i(page)f(68.)62 1070 y(The)21
b(other)g(imp)q(ortan)o(t)f(new)h(feature)f(is)h(the)g
Fk(\045prec)f Fp(in)i(the)e(grammar)g(section)h(for)f(the)h(unary)f
(min)o(us)0 1132 y(op)q(erator.)h(The)c Fk(\045prec)e
Fp(simply)i(instructs)g(Bison)f(that)f(the)i(rule)f(`)p
Fk(|)f('-')g(exp)p Fp(')g(has)h(the)g(same)g(precedence)h(as)0
1194 y Fk(NEG)p Fp(|in)f(this)g(case)f(the)g(next-to-highest.)21
b(See)15 b(Section)h(5.4)f([Con)o(text-Dep)q(enden)o(t)g(Precedence],)h
(page)f(70.)62 1344 y(Here)h(is)f(a)g(sample)h(run)g(of)e(`)p
Fk(calc.y)p Fp(':)120 1479 y Fk(\045)24 b(calc)120 1529
y(4)g(+)f(4.5)h(-)g(\(34/\(8*3+-3\)\))120 1579 y(6.880952381)120
1628 y(-56)f(+)h(2)120 1678 y(-54)120 1728 y(3)g(^)f(2)120
1778 y(9)0 2121 y Fo(2.3)33 b(Simple)17 b(Error)f(Reco)n(v)n(ery)62
2271 y Fp(Up)j(to)e(this)h(p)q(oin)o(t,)h(this)f(man)o(ual)g(has)g(not)
g(addressed)g(the)g(issue)h(of)f Fl(error)f(reco)o(v)o(ery)p
Fp(|ho)o(w)g(to)g(con)o(tin)o(ue)0 2333 y(parsing)12
b(after)f(the)g(parser)h(detects)f(a)g(syn)o(tax)g(error.)18
b(All)13 b(w)o(e)e(ha)o(v)o(e)h(handled)h(is)f(error)f(rep)q(orting)g
(with)h Fk(yyerror)p Fp(.)0 2395 y(Recall)k(that)e(b)o(y)h(default)g
Fk(yyparse)f Fp(returns)g(after)g(calling)j Fk(yyerror)p
Fp(.)h(This)d(means)g(that)f(an)g(erroneous)h(input)0
2458 y(line)i(causes)e(the)h(calculator)f(program)f(to)h(exit.)20
b(No)o(w)15 b(w)o(e)g(sho)o(w)f(ho)o(w)h(to)g(rectify)g(this)h
(de\014ciency)l(.)62 2608 y(The)22 b(Bison)g(language)g(itself)h
(includes)g(the)f(reserv)o(ed)g(w)o(ord)f Fk(error)p
Fp(,)h(whic)o(h)g(ma)o(y)f(b)q(e)h(included)i(in)f(the)0
2670 y(grammar)14 b(rules.)20 b(In)c(the)f(example)h(b)q(elo)o(w)g(it)g
(has)f(b)q(een)h(added)g(to)e(one)i(of)f(the)g(alternativ)o(es)g(for)g
Fk(line)p Fp(:)p eop
%%Page: 31 33
31 32 bop 0 -58 a Fp(Chapter)15 b(2:)k(Examples)1482
b(31)120 183 y Fk(line:)119 b('\\n')311 246 y(|)24 b(exp)f('\\n')71
b({)24 b(printf)f(\("\\t\045.10g\\n",)f($1\);)h(})311
308 y(|)h(error)f('\\n')g({)h(yyerrok;)428 b(})120 370
y(;)62 501 y Fp(This)17 b(addition)g(to)f(the)g(grammar)f(allo)o(ws)h
(for)g(simple)h(error)f(reco)o(v)o(ery)g(in)h(the)f(ev)o(en)o(t)g(of)g
(a)f(parse)i(error.)22 b(If)0 563 y(an)17 b(expression)h(that)f(cannot)
g(b)q(e)h(ev)m(aluated)g(is)g(read,)f(the)g(error)g(will)i(b)q(e)f
(recognized)g(b)o(y)f(the)h(third)g(rule)g(for)0 625
y Fk(line)p Fp(,)g(and)h(parsing)f(will)i(con)o(tin)o(ue.)30
b(\(The)18 b Fk(yyerror)f Fp(function)i(is)g(still)h(called)g(up)q(on)f
(to)e(prin)o(t)i(its)f(message)0 687 y(as)d(w)o(ell.\))21
b(The)16 b(action)g(executes)g(the)f(statemen)o(t)g Fk(yyerrok)p
Fp(,)f(a)h(macro)g(de\014ned)i(automatically)e(b)o(y)h(Bison;)g(its)0
750 y(meaning)j(is)g(that)f(error)g(reco)o(v)o(ery)g(is)h(complete)h
(\(see)e(Chapter)h(6)f([Error)f(Reco)o(v)o(ery],)i(page)f(77\).)30
b(Note)18 b(the)0 812 y(di\013erence)e(b)q(et)o(w)o(een)g
Fk(yyerrok)e Fp(and)h Fk(yyerror)p Fp(;)f(neither)i(one)g(is)g(a)e
(misprin)o(t.)62 950 y(This)e(form)e(of)h(error)f(reco)o(v)o(ery)h
(deals)h(with)f(syn)o(tax)f(errors.)18 b(There)11 b(are)g(other)g
(kinds)h(of)f(errors;)g(for)f(example,)0 1012 y(division)16
b(b)o(y)f(zero,)f(whic)o(h)h(raises)f(an)h(exception)g(signal)g(that)f
(is)h(normally)g(fatal.)k(A)c(real)f(calculator)h(program)0
1075 y(m)o(ust)d(handle)i(this)g(signal)f(and)g(use)g
Fk(longjmp)f Fp(to)g(return)h(to)f Fk(main)h Fp(and)g(resume)g(parsing)
g(input)h(lines;)g(it)g(w)o(ould)0 1137 y(also)e(ha)o(v)o(e)g(to)g
(discard)h(the)f(rest)g(of)g(the)h(curren)o(t)f(line)i(of)e(input.)20
b(W)l(e)12 b(w)o(on't)f(discuss)j(this)f(issue)g(further)f(b)q(ecause)0
1199 y(it)j(is)h(not)f(sp)q(eci\014c)i(to)e(Bison)g(programs.)0
1432 y Fo(2.4)33 b(Multi-F)-6 b(uncti)q(on)18 b(Calculator:)23
b Fg(mfcalc)62 1570 y Fp(No)o(w)18 b(that)f(the)i(basics)f(of)g(Bison)h
(ha)o(v)o(e)f(b)q(een)h(discussed,)h(it)f(is)f(time)h(to)e(mo)o(v)o(e)h
(on)g(to)f(a)h(more)g(adv)m(anced)0 1632 y(problem.)25
b(The)17 b(ab)q(o)o(v)o(e)g(calculators)g(pro)o(vided)g(only)h(\014v)o
(e)f(functions,)g(`)p Fk(+)p Fp(',)f(`)p Fk(-)p Fp(',)g(`)p
Fk(*)p Fp(',)g(`)p Fk(/)p Fp(')g(and)h(`)p Fk(^)p Fp('.)23
b(It)17 b(w)o(ould)g(b)q(e)0 1695 y(nice)f(to)f(ha)o(v)o(e)g(a)g
(calculator)g(that)g(pro)o(vides)h(other)e(mathematical)i(functions)g
(suc)o(h)f(as)g Fk(sin)p Fp(,)f Fk(cos)p Fp(,)h(etc.)62
1833 y(It)h(is)g(easy)g(to)f(add)h(new)g(op)q(erators)f(to)g(the)h
(in\014x)h(calculator)f(as)g(long)g(as)f(they)h(are)g(only)g(single-c)o
(haracter)0 1895 y(literals.)43 b(The)23 b(lexical)i(analyzer)e
Fk(yylex)f Fp(passes)g(bac)o(k)h(all)g(non-n)o(um)o(b)q(er)h(c)o
(haracters)e(as)g(tok)o(ens,)h(so)g(new)0 1957 y(grammar)16
b(rules)i(su\016ce)g(for)f(adding)i(a)e(new)h(op)q(erator.)26
b(But)17 b(w)o(e)h(w)o(an)o(t)e(something)i(more)f(\015exible:)27
b(built-in)0 2019 y(functions)16 b(whose)f(syn)o(tax)g(has)g(this)g
(form:)120 2145 y Fl(function)p 285 2145 14 2 v 17 w(name)27
b Fk(\()p Fl(argumen)o(t)q Fk(\))0 2283 y Fp(A)o(t)12
b(the)g(same)h(time,)f(w)o(e)h(will)h(add)e(memory)g(to)g(the)g
(calculator,)i(b)o(y)e(allo)o(wing)h(y)o(ou)f(to)g(create)g(named)h(v)m
(ariables,)0 2345 y(store)d(v)m(alues)i(in)g(them,)f(and)g(use)h(them)e
(later.)19 b(Here)11 b(is)g(a)g(sample)g(session)h(with)f(the)g(m)o
(ulti-function)i(calculator:)120 2471 y Fk(\045)24 b(acalc)120
2521 y(pi)g(=)f(3.141592653589)120 2570 y(3.1415926536)120
2620 y(sin\(pi\))120 2670 y(0.0000000000)p eop
%%Page: 32 34
32 33 bop 0 -58 a Fp(32)1697 b(Bison)16 b(1.20)120 183
y Fk(alpha)23 b(=)h(beta1)f(=)h(2.3)120 233 y(2.3000000000)120
283 y(alpha)120 333 y(2.3000000000)120 382 y(ln\(alpha\))120
432 y(0.8329091229)120 482 y(exp\(ln\(beta1\)\))120 532
y(2.3000000000)120 582 y(\045)62 732 y Fp(Note)15 b(that)g(m)o(ultiple)
i(assignmen)o(t)e(and)g(nested)h(function)g(calls)g(are)f(p)q
(ermitted.)0 1061 y Fj(2.4.1)30 b(Declarations)15 b(for)g
Fi(mfcalc)62 1211 y Fp(Here)h(are)f(the)g(C)g(and)g(Bison)h
(declarations)g(for)f(the)g(m)o(ulti-function)i(calculator.)120
1349 y Fk(\045{)120 1399 y(#include)23 b(<math.h>)46
b(/*)24 b(For)f(math)h(functions,)e(cos\(\),)h(sin\(\),)g(etc.)h(*/)120
1449 y(#include)f("calc.h")46 b(/*)24 b(Contains)f(definition)f(of)i
(`symrec')190 b(*/)120 1498 y(\045})120 1548 y(\045union)23
b({)120 1598 y(double)118 b(val;)48 b(/*)23 b(For)h(returning)e
(numbers.)453 b(*/)120 1648 y(symrec)47 b(*tptr;)71 b(/*)23
b(For)h(returning)e(symbol-table)h(pointers)142 b(*/)120
1698 y(})120 1797 y(\045token)23 b(<val>)47 b(NUM)191
b(/*)23 b(Simple)g(double)g(precision)g(number)71 b(*/)120
1847 y(\045token)23 b(<tptr>)g(VAR)h(FNCT)71 b(/*)23
b(Variable)g(and)g(Function)286 b(*/)120 1897 y(\045type)47
b(<val>)g(exp)120 1997 y(\045right)23 b('=')120 2046
y(\045left)g('-')h('+')120 2096 y(\045left)f('*')h('/')120
2146 y(\045left)f(NEG)119 b(/*)24 b(Negation--unary)d(minus)j(*/)120
2196 y(\045right)f('^')95 b(/*)24 b(Exponentiation)189
b(*/)120 2295 y(/*)24 b(Grammar)e(follows)h(*/)120 2395
y(\045\045)62 2545 y Fp(The)c(ab)q(o)o(v)o(e)f(grammar)f(in)o(tro)q
(duces)j(only)f(t)o(w)o(o)e(new)i(features)f(of)g(the)h(Bison)g
(language.)30 b(These)19 b(features)0 2608 y(allo)o(w)d(seman)o(tic)g
(v)m(alues)h(to)e(ha)o(v)o(e)h(v)m(arious)g(data)f(t)o(yp)q(es)h(\(see)
g(Section)g(3.5.2)e([More)h(Than)h(One)h(V)l(alue)f(T)o(yp)q(e],)0
2670 y(page)f(45\).)p eop
%%Page: 33 35
33 34 bop 0 -58 a Fp(Chapter)15 b(2:)k(Examples)1482
b(33)62 183 y(The)22 b Fk(\045union)e Fp(declaration)i(sp)q(eci\014es)h
(the)f(en)o(tire)f(list)h(of)f(p)q(ossible)i(t)o(yp)q(es;)h(this)e(is)g
(instead)g(of)e(de\014ning)0 246 y Fk(YYSTYPE)p Fp(.)25
b(The)17 b(allo)o(w)o(able)h(t)o(yp)q(es)f(are)g(no)o(w)f
(double-\015oats)i(\(for)e Fk(exp)h Fp(and)g Fk(NUM)p
Fp(\))f(and)i(p)q(oin)o(ters)f(to)g(en)o(tries)g(in)0
308 y(the)e(sym)o(b)q(ol)h(table.)k(See)c(Section)g(3.6.3)e([The)h
(Collection)h(of)f(V)l(alue)h(T)o(yp)q(es],)f(page)g(52.)62
452 y(Since)i(v)m(alues)f(can)f(no)o(w)g(ha)o(v)o(e)f(v)m(arious)i(t)o
(yp)q(es,)f(it)g(is)g(necessary)h(to)e(asso)q(ciate)h(a)g(t)o(yp)q(e)g
(with)g(eac)o(h)g(grammar)0 515 y(sym)o(b)q(ol)h(whose)g(seman)o(tic)g
(v)m(alue)h(is)f(used.)22 b(These)16 b(sym)o(b)q(ols)g(are)g
Fk(NUM)p Fp(,)f Fk(VAR)p Fp(,)g Fk(FNCT)p Fp(,)g(and)h
Fk(exp)p Fp(.)21 b(Their)16 b(declara-)0 577 y(tions)f(are)g(augmen)o
(ted)g(with)h(information)f(ab)q(out)g(their)h(data)e(t)o(yp)q(e)i
(\(placed)g(b)q(et)o(w)o(een)f(angle)h(brac)o(k)o(ets\).)62
722 y(The)e(Bison)g(construct)f Fk(\045type)f Fp(is)i(used)g(for)f
(declaring)i(non)o(terminal)f(sym)o(b)q(ols,)f(just)g(as)g
Fk(\045token)g Fp(is)h(used)g(for)0 784 y(declaring)j(tok)o(en)e(t)o
(yp)q(es.)22 b(W)l(e)16 b(ha)o(v)o(e)f(not)g(used)i Fk(\045type)e
Fp(b)q(efore)h(b)q(ecause)g(non)o(terminal)h(sym)o(b)q(ols)f(are)f
(normally)0 846 y(declared)j(implicitly)j(b)o(y)c(the)g(rules)h(that)e
(de\014ne)i(them.)26 b(But)17 b Fk(exp)g Fp(m)o(ust)f(b)q(e)i(declared)
g(explicitly)i(so)d(w)o(e)g(can)0 908 y(sp)q(ecify)g(its)e(v)m(alue)h
(t)o(yp)q(e.)k(See)c(Section)g(3.6.4)e([Non)o(terminal)h(Sym)o(b)q
(ols],)g(page)g(53.)0 1185 y Fj(2.4.2)30 b(Grammar)15
b(Rules)h(for)e Fi(mfcalc)62 1330 y Fp(Here)i(are)e(the)i(grammar)d
(rules)j(for)e(the)i(m)o(ulti-function)g(calculator.)21
b(Most)14 b(of)h(them)g(are)f(copied)j(directly)0 1392
y(from)d Fk(calc)p Fp(;)h(three)g(rules,)h(those)e(whic)o(h)j(men)o
(tion)e Fk(VAR)g Fp(or)f Fk(FNCT)p Fp(,)h(are)g(new.)120
1524 y Fk(input:)71 b(/*)23 b(empty)h(*/)311 1574 y(|)g(input)f(line)
120 1624 y(;)120 1724 y(line:)359 1773 y('\\n')311 1823
y(|)h(exp)f('\\n')71 b({)24 b(printf)f(\("\\t\045.10g\\n",)f($1\);)h(})
311 1873 y(|)h(error)f('\\n')g({)h(yyerrok;)428 b(})120
1923 y(;)120 2022 y(exp:)143 b(NUM)381 b({)24 b($$)f(=)h($1;)596
b(})311 2072 y(|)24 b(VAR)381 b({)24 b($$)f(=)h($1->value.var;)332
b(})311 2122 y(|)24 b(VAR)f('=')h(exp)190 b({)24 b($$)f(=)h($3;)g
($1->value.var)e(=)h($3;)119 b(})311 2172 y(|)24 b(FNCT)f('\(')g(exp)h
('\)')71 b({)24 b($$)f(=)h(\(*\($1->value.fnctptr\)\)\($3\);)c(})311
2222 y(|)k(exp)f('+')h(exp)190 b({)24 b($$)f(=)h($1)g(+)f($3;)477
b(})311 2271 y(|)24 b(exp)f('-')h(exp)190 b({)24 b($$)f(=)h($1)g(-)f
($3;)477 b(})311 2321 y(|)24 b(exp)f('*')h(exp)190 b({)24
b($$)f(=)h($1)g(*)f($3;)477 b(})311 2371 y(|)24 b(exp)f('/')h(exp)190
b({)24 b($$)f(=)h($1)g(/)f($3;)477 b(})311 2421 y(|)24
b('-')f(exp)47 b(\045prec)24 b(NEG)f({)h($$)f(=)h(-$2;)572
b(})311 2471 y(|)24 b(exp)f('^')h(exp)190 b({)24 b($$)f(=)h(pow)g
(\($1,)f($3\);)357 b(})311 2521 y(|)24 b('\(')f(exp)h('\)')190
b({)24 b($$)f(=)h($2;)596 b(})120 2570 y(;)120 2620 y(/*)24
b(End)f(of)h(grammar)f(*/)120 2670 y(\045\045)p eop
%%Page: 34 36
34 35 bop 0 -58 a Fp(34)1697 b(Bison)16 b(1.20)0 183
y Fj(2.4.3)30 b(The)15 b Fi(mfcalc)g Fj(Sym)n(b)r(ol)h(T)-5
b(able)62 341 y Fp(The)15 b(m)o(ulti-function)h(calculator)f(requires)h
(a)e(sym)o(b)q(ol)h(table)g(to)f(k)o(eep)h(trac)o(k)e(of)i(the)f(names)
h(and)f(meanings)0 403 y(of)j(v)m(ariables)i(and)f(functions.)28
b(This)19 b(do)q(esn't)e(a\013ect)g(the)h(grammar)e(rules)j(\(except)e
(for)g(the)h(actions\))g(or)f(the)0 465 y(Bison)f(declarations,)f(but)h
(it)f(requires)h(some)f(additional)i(C)e(functions)h(for)e(supp)q(ort.)
62 623 y(The)k(sym)o(b)q(ol)g(table)g(itself)h(consists)f(of)f(a)g
(link)o(ed)i(list)g(of)e(records.)27 b(Its)18 b(de\014nition,)h(whic)o
(h)g(is)f(k)o(ept)f(in)i(the)0 685 y(header)14 b(`)p
Fk(calc.h)p Fp(',)d(is)j(as)f(follo)o(ws.)20 b(It)13
b(pro)o(vides)h(for)e(either)i(functions)h(or)d(v)m(ariables)j(to)e(b)q
(e)h(placed)g(in)g(the)g(table.)120 838 y Fk(/*)24 b(Data)f(type)g(for)
h(links)f(in)g(the)h(chain)f(of)h(symbols.)142 b(*/)120
900 y(struct)23 b(symrec)120 963 y({)168 1025 y(char)g(*name;)47
b(/*)24 b(name)f(of)g(symbol)501 b(*/)168 1087 y(int)23
b(type;)95 b(/*)24 b(type)f(of)g(symbol:)g(either)g(VAR)h(or)f(FNCT)h
(*/)168 1149 y(union)f({)215 1212 y(double)g(var;)262
b(/*)24 b(value)f(of)h(a)g(VAR)238 b(*/)215 1274 y(double)23
b(\(*fnctptr\)\(\);)46 b(/*)24 b(value)f(of)h(a)g(FNCT)214
b(*/)168 1336 y(})23 b(value;)168 1398 y(struct)g(symrec)g(*next;)94
b(/*)24 b(link)f(field)334 b(*/)120 1461 y(};)120 1534
y(typedef)23 b(struct)g(symrec)g(symrec;)120 1658 y(/*)h(The)f(symbol)g
(table:)g(a)h(chain)f(of)h(`struct)f(symrec'.)118 b(*/)120
1721 y(extern)23 b(symrec)g(*sym_table;)120 1845 y(symrec)g(*putsym)g
(\(\);)120 1907 y(symrec)g(*getsym)g(\(\);)62 2058 y
Fp(The)18 b(new)f(v)o(ersion)h(of)e Fk(main)h Fp(includes)j(a)d(call)h
(to)f Fk(init_table)p Fp(,)e(a)i(function)h(that)f(initializes)j(the)e
(sym)o(b)q(ol)0 2120 y(table.)i(Here)c(it)f(is,)h(and)f
Fk(init_table)f Fp(as)h(w)o(ell:)120 2273 y Fk(#include)23
b(<stdio.h>)120 2398 y(main)g(\(\))120 2460 y({)168 2522
y(init_table)f(\(\);)168 2584 y(yyparse)h(\(\);)120 2647
y(})p eop
%%Page: 35 37
35 36 bop 0 -58 a Fp(Chapter)15 b(2:)k(Examples)1482
b(35)120 183 y Fk(yyerror)23 b(\(s\))47 b(/*)24 b(Called)f(by)g
(yyparse)g(on)h(error)f(*/)239 246 y(char)h(*s;)120 308
y({)168 370 y(printf)f(\("\045s\\n",)g(s\);)120 432 y(})120
557 y(struct)g(init)120 619 y({)168 681 y(char)g(*fname;)168
744 y(double)g(\(*fnct\)\(\);)120 806 y(};)120 879 y(struct)g(init)g
(arith_fncts[])168 941 y(=)g({)263 1004 y("sin",)g(sin,)263
1066 y("cos",)g(cos,)263 1128 y("atan",)g(atan,)263 1190
y("ln",)g(log,)263 1253 y("exp",)g(exp,)263 1315 y("sqrt",)g(sqrt,)263
1377 y(0,)h(0)215 1439 y(};)120 1564 y(/*)g(The)f(symbol)g(table:)g(a)h
(chain)f(of)h(`struct)f(symrec'.)46 b(*/)120 1626 y(symrec)23
b(*sym_table)g(=)g(\(symrec)g(*\)0;)120 1699 y(init_table)f(\(\))48
b(/*)24 b(puts)f(arithmetic)f(functions)h(in)h(table.)f(*/)120
1762 y({)168 1824 y(int)g(i;)168 1886 y(symrec)g(*ptr;)168
1948 y(for)g(\(i)h(=)f(0;)h(arith_fncts[i].fname)d(!=)j(0;)f(i++\))215
2011 y({)263 2073 y(ptr)h(=)f(putsym)g(\(arith_fncts[i].fname,)e
(FNCT\);)263 2135 y(ptr->value.fnctptr)h(=)h(arith_fncts[i].fnct;)215
2198 y(})120 2260 y(})62 2399 y Fp(By)e(simply)h(editing)g(the)f
(initialization)j(list)e(and)f(adding)g(the)g(necessary)g(include)j
(\014les,)e(y)o(ou)f(can)g(add)0 2461 y(additional)c(functions)f(to)e
(the)h(calculator.)62 2608 y(Tw)o(o)j(imp)q(ortan)o(t)f(functions)i
(allo)o(w)g(lo)q(ok-up)g(and)f(installation)i(of)e(sym)o(b)q(ols)g(in)h
(the)g(sym)o(b)q(ol)f(table.)30 b(The)0 2670 y(function)18
b Fk(putsym)f Fp(is)h(passed)f(a)g(name)h(and)f(the)h(t)o(yp)q(e)f(\()p
Fk(VAR)g Fp(or)g Fk(FNCT)p Fp(\))f(of)h(the)h(ob)s(ject)f(to)f(b)q(e)i
(installed.)29 b(The)p eop
%%Page: 36 38
36 37 bop 0 -58 a Fp(36)1697 b(Bison)16 b(1.20)0 183
y(ob)s(ject)k(is)h(link)o(ed)i(to)d(the)g(fron)o(t)g(of)g(the)h(list,)h
(and)f(a)g(p)q(oin)o(ter)g(to)f(the)g(ob)s(ject)g(is)i(returned.)36
b(The)21 b(function)0 246 y Fk(getsym)12 b Fp(is)i(passed)f(the)g(name)
g(of)g(the)g(sym)o(b)q(ol)h(to)e(lo)q(ok)h(up.)20 b(If)13
b(found,)h(a)f(p)q(oin)o(ter)g(to)g(that)f(sym)o(b)q(ol)h(is)h
(returned;)0 308 y(otherwise)h(zero)g(is)h(returned.)120
487 y Fk(symrec)23 b(*)120 537 y(putsym)g(\(sym_name,sym_type\))239
587 y(char)h(*sym_name;)239 637 y(int)g(sym_type;)120
687 y({)168 736 y(symrec)f(*ptr;)168 786 y(ptr)g(=)h(\(symrec)f(*\))g
(malloc)g(\(sizeof)g(\(symrec\)\);)168 836 y(ptr->name)f(=)i(\(char)f
(*\))h(malloc)f(\(strlen)g(\(sym_name\))f(+)i(1\);)168
886 y(strcpy)f(\(ptr->name,sym_name\);)168 936 y(ptr->type)f(=)i
(sym_type;)168 986 y(ptr->value.var)e(=)h(0;)h(/*)g(set)f(value)g(to)h
(0)g(even)f(if)g(fctn.)47 b(*/)168 1035 y(ptr->next)22
b(=)i(\(struct)f(symrec)g(*\)sym_table;)168 1085 y(sym_table)f(=)i
(ptr;)168 1135 y(return)f(ptr;)120 1185 y(})120 1284
y(symrec)g(*)120 1334 y(getsym)g(\(sym_name\))239 1384
y(char)h(*sym_name;)120 1434 y({)168 1484 y(symrec)f(*ptr;)168
1533 y(for)g(\(ptr)g(=)h(sym_table;)f(ptr)g(!=)h(\(symrec)f(*\))g(0;)
287 1583 y(ptr)g(=)h(\(symrec)f(*\)ptr->next\))215 1633
y(if)h(\(strcmp)f(\(ptr->name,sym_name\))e(==)j(0\))263
1683 y(return)f(ptr;)168 1733 y(return)g(0;)120 1783
y(})62 1975 y Fp(The)g(function)f Fk(yylex)g Fp(m)o(ust)f(no)o(w)h
(recognize)h(v)m(ariables,)h(n)o(umeric)f(v)m(alues,)i(and)d(the)g
(single-c)o(haracter)0 2037 y(arithmetic)15 b(op)q(erators.)k(Strings)
14 b(of)g(alphan)o(umeric)i(c)o(haracters)e(with)g(a)h(leading)g
(nondigit)h(are)e(recognized)h(as)0 2099 y(either)h(v)m(ariables)g(or)f
(functions)h(dep)q(ending)i(on)d(what)f(the)i(sym)o(b)q(ol)f(table)h
(sa)o(ys)e(ab)q(out)h(them.)62 2291 y(The)e(string)g(is)g(passed)g(to)f
Fk(getsym)g Fp(for)g(lo)q(ok)h(up)g(in)g(the)g(sym)o(b)q(ol)g(table.)20
b(If)12 b(the)h(name)g(app)q(ears)g(in)g(the)g(table,)0
2353 y(a)j(p)q(oin)o(ter)g(to)g(its)g(lo)q(cation)h(and)f(its)g(t)o(yp)
q(e)h(\()p Fk(VAR)e Fp(or)h Fk(FNCT)p Fp(\))f(is)h(returned)h(to)e
Fk(yyparse)p Fp(.)22 b(If)16 b(it)g(is)h(not)f(already)g(in)0
2416 y(the)f(table,)g(then)g(it)g(is)g(installed)i(as)d(a)h
Fk(VAR)f Fp(using)i Fk(putsym)p Fp(.)i(Again,)d(a)g(p)q(oin)o(ter)g
(and)g(its)g(t)o(yp)q(e)g(\(whic)o(h)g(m)o(ust)f(b)q(e)0
2478 y Fk(VAR)p Fp(\))g(is)i(returned)g(to)e Fk(yyparse)p
Fp(.)62 2670 y(No)h(c)o(hange)g(is)h(needed)h(in)f(the)f(handling)i(of)
e(n)o(umeric)h(v)m(alues)g(and)g(arithmetic)f(op)q(erators)g(in)h
Fk(yylex)p Fp(.)p eop
%%Page: 37 39
37 38 bop 0 -58 a Fp(Chapter)15 b(2:)k(Examples)1482
b(37)120 183 y Fk(#include)23 b(<ctype.h>)120 246 y(yylex)g(\(\))120
308 y({)168 370 y(int)g(c;)168 495 y(/*)g(Ignore)g(whitespace,)g(get)g
(first)g(nonwhite)g(character.)46 b(*/)168 557 y(while)23
b(\(\(c)g(=)h(getchar)f(\(\)\))g(==)h(')g(')f(||)h(c)g(==)f('\\t'\);)
168 681 y(if)g(\(c)h(==)f(EOF\))215 744 y(return)g(0;)168
861 y(/*)g(Char)h(starts)f(a)g(number)g(=>)h(parse)f(the)h(number.)213
b(*/)168 923 y(if)23 b(\(c)h(==)f('.')h(||)g(isdigit)e(\(c\)\))215
985 y({)263 1048 y(ungetc)h(\(c,)h(stdin\);)263 1110
y(scanf)f(\("\045lf",)g(&yylval.val\);)263 1172 y(return)g(NUM;)215
1235 y(})168 1352 y(/*)g(Char)h(starts)f(an)g(identifier)g(=>)g(read)h
(the)f(name.)166 b(*/)168 1414 y(if)23 b(\(isalpha)g(\(c\)\))215
1476 y({)263 1539 y(symrec)g(*s;)263 1601 y(static)g(char)h(*symbuf)e
(=)i(0;)263 1663 y(static)f(int)h(length)f(=)g(0;)263
1725 y(int)h(i;)263 1843 y(/*)g(Initially)e(make)i(the)f(buffer)g(long)
h(enough)335 1905 y(for)f(a)h(40-character)e(symbol)h(name.)47
b(*/)263 1967 y(if)24 b(\(length)f(==)g(0\))311 2029
y(length)g(=)h(40,)f(symbuf)g(=)h(\(char)f(*\)malloc)g(\(length)g(+)g
(1\);)263 2154 y(i)h(=)g(0;)263 2216 y(do)p eop
%%Page: 38 40
38 39 bop 0 -58 a Fp(38)1697 b(Bison)16 b(1.20)311 227
y Fk({)359 290 y(/*)23 b(If)h(buffer)f(is)g(full,)h(make)f(it)h
(bigger.)189 b(*/)359 352 y(if)23 b(\(i)h(==)f(length\))406
414 y({)454 476 y(length)g(*=)h(2;)454 539 y(symbuf)f(=)h(\(char)f
(*\)realloc)g(\(symbuf,)f(length)h(+)h(1\);)406 601 y(})359
663 y(/*)f(Add)h(this)f(character)g(to)g(the)h(buffer.)213
b(*/)359 725 y(symbuf[i++])22 b(=)i(c;)359 788 y(/*)f(Get)h(another)f
(character.)475 b(*/)359 850 y(c)23 b(=)h(getchar)f(\(\);)311
912 y(})263 980 y(while)g(\(c)h(!=)g(EOF)f(&&)h(isalnum)e(\(c\)\);)263
1104 y(ungetc)h(\(c,)h(stdin\);)263 1167 y(symbuf[i])f(=)h('\\0';)263
1284 y(s)g(=)g(getsym)f(\(symbuf\);)263 1346 y(if)h(\(s)f(==)h(0\))311
1408 y(s)g(=)f(putsym)g(\(symbuf,)g(VAR\);)263 1471 y(yylval.tptr)g(=)g
(s;)263 1533 y(return)g(s->type;)215 1595 y(})168 1720
y(/*)g(Any)h(other)f(character)g(is)g(a)h(token)f(by)h(itself.)190
b(*/)168 1782 y(return)23 b(c;)120 1844 y(})62 1974 y
Fp(This)13 b(program)e(is)i(b)q(oth)f(p)q(o)o(w)o(erful)h(and)f
(\015exible.)21 b(Y)l(ou)12 b(ma)o(y)g(easily)h(add)f(new)h(functions,)
g(and)f(it)h(is)g(a)e(simple)0 2036 y(job)k(to)g(mo)q(dify)g(this)h(co)
q(de)g(to)e(install)j(prede\014ned)g(v)m(ariables)f(suc)o(h)g(as)f
Fk(pi)g Fp(or)f Fk(e)h Fp(as)g(w)o(ell.)0 2247 y Fo(2.5)33
b(Exercises)25 2384 y Fp(1.)c(Add)16 b(some)f(new)g(functions)h(from)e
(`)p Fk(math.h)p Fp(')g(to)h(the)g(initialization)j(list.)25
2456 y(2.)29 b(Add)15 b(another)f(arra)o(y)g(that)f(con)o(tains)i
(constan)o(ts)f(and)h(their)g(v)m(alues.)20 b(Then)c(mo)q(dify)f
Fk(init_table)e Fp(to)h(add)90 2518 y(these)h(constan)o(ts)g(to)f(the)i
(sym)o(b)q(ol)f(table.)20 b(It)c(will)g(b)q(e)g(easiest)g(to)e(giv)o(e)
i(the)f(constan)o(ts)f(t)o(yp)q(e)i Fk(VAR)p Fp(.)25
2590 y(3.)29 b(Mak)o(e)18 b(the)h(program)f(rep)q(ort)h(an)g(error)f
(if)h(the)g(user)g(refers)g(to)f(an)h(uninitiali)q(zed)j(v)m(ariable)f
(in)e(an)o(y)g(w)o(a)o(y)90 2652 y(except)d(to)e(store)h(a)g(v)m(alue)h
(in)g(it.)p eop
%%Page: 39 41
39 40 bop 0 -58 a Fp(Chapter)15 b(3:)k(Bison)d(Grammar)e(Files)1247
b(39)0 183 y Fm(3)41 b(Bison)15 b(Grammar)h(Files)62
439 y Fp(Bison)h(tak)o(es)e(as)h(input)h(a)f(con)o(text-free)f(grammar)
g(sp)q(eci\014cation)j(and)e(pro)q(duces)h(a)f(C-language)g(function)0
501 y(that)e(recognizes)j(correct)d(instances)i(of)f(the)g(grammar.)62
652 y(The)h(Bison)g(grammar)d(input)j(\014le)h(con)o(v)o(en)o(tionally)
f(has)f(a)g(name)g(ending)i(in)f(`)p Fk(.y)p Fp('.)0
1000 y Fo(3.1)33 b(Outline)16 b(of)e(a)h(Bison)g(Grammar)62
1151 y Fp(A)h(Bison)f(grammar)f(\014le)i(has)f(four)g(main)h(sections,)
f(sho)o(wn)g(here)h(with)f(the)g(appropriate)h(delimiters:)120
1290 y Fk(\045{)120 1339 y Fl(C)f(declarations)120 1389
y Fk(\045})120 1489 y Fl(Bison)h(declarations)120 1588
y Fk(\045\045)120 1638 y Fl(Grammar)e(rules)120 1688
y Fk(\045\045)120 1788 y Fl(Additional)j(C)e(co)q(de)62
1938 y Fp(Commen)o(ts)g(enclosed)h(in)g(`)p Fk(/*)f Fh(:)8
b(:)g(:)13 b Fk(*/)p Fp(')h(ma)o(y)h(app)q(ear)g(in)h(an)o(y)f(of)g
(the)g(sections.)0 2270 y Fj(3.1.1)30 b(The)15 b(C)g(Declarations)g
(Section)62 2421 y Fp(The)d Fl(C)f(declarations)j Fp(section)e(con)o
(tains)f(macro)g(de\014nitions)i(and)f(declarations)g(of)f(functions)h
(and)g(v)m(ariables)0 2483 y(that)i(are)g(used)i(in)f(the)g(actions)g
(in)g(the)g(grammar)e(rules.)20 b(These)15 b(are)g(copied)h(to)e(the)g
(b)q(eginning)j(of)e(the)f(parser)0 2545 y(\014le)i(so)e(that)g(they)g
(precede)i(the)e(de\014nition)j(of)d Fk(yyparse)p Fp(.)19
b(Y)l(ou)14 b(can)h(use)g(`)p Fk(#include)p Fp(')e(to)h(get)g(the)g
(declarations)0 2608 y(from)f(a)h(header)h(\014le.)21
b(If)14 b(y)o(ou)g(don't)g(need)h(an)o(y)f(C)g(declarations,)h(y)o(ou)e
(ma)o(y)h(omit)g(the)g(`)p Fk(\045{)p Fp(')g(and)g(`)p
Fk(\045})p Fp(')f(delimiters)0 2670 y(that)h(brac)o(k)o(et)h(this)h
(section.)p eop
%%Page: 40 42
40 41 bop 0 -58 a Fp(40)1697 b(Bison)16 b(1.20)0 183
y Fj(3.1.2)30 b(The)15 b(Bison)g(Declarations)g(Section)62
320 y Fp(The)f Fl(Bison)g(declarations)i Fp(section)e(con)o(tains)g
(declarations)g(that)f(de\014ne)i(terminal)f(and)g(non)o(terminal)g
(sym-)0 383 y(b)q(ols,)h(sp)q(ecify)h(precedence,)g(and)f(so)f(on.)20
b(In)15 b(some)f(simple)i(grammars)d(y)o(ou)i(ma)o(y)f(not)g(need)h(an)
o(y)g(declarations.)0 445 y(See)h(Section)g(3.6)e([Bison)i
(Declarations],)e(page)h(50.)0 654 y Fj(3.1.3)30 b(The)15
b(Grammar)g(Rules)g(Section)62 791 y Fp(The)j Fl(grammar)e(rules)k
Fp(section)f(con)o(tains)e(one)h(or)f(more)g(Bison)i(grammar)d(rules,)i
(and)g(nothing)g(else.)28 b(See)0 853 y(Section)16 b(3.3)e([Syn)o(tax)h
(of)f(Grammar)g(Rules],)i(page)f(42.)62 990 y(There)e(m)o(ust)f(alw)o
(a)o(ys)g(b)q(e)h(at)e(least)i(one)g(grammar)d(rule,)k(and)f(the)f
(\014rst)g(`)p Fk(\045\045)p Fp(')g(\(whic)o(h)g(precedes)i(the)e
(grammar)0 1052 y(rules\))k(ma)o(y)e(nev)o(er)h(b)q(e)h(omitted)g(ev)o
(en)f(if)h(it)f(is)h(the)f(\014rst)g(thing)h(in)g(the)f(\014le.)0
1261 y Fj(3.1.4)30 b(The)15 b(Additional)g(C)g(Co)r(de)g(Section)62
1398 y Fp(The)k Fl(additional)h(C)f(co)q(de)j Fp(section)d(is)g(copied)
h(v)o(erbatim)f(to)f(the)h(end)g(of)f(the)h(parser)f(\014le,)j(just)d
(as)g(the)h Fl(C)0 1460 y(declarations)f Fp(section)e(is)g(copied)g(to)
f(the)h(b)q(eginning.)22 b(This)16 b(is)g(the)g(most)e(con)o(v)o(enien)
o(t)i(place)g(to)f(put)h(an)o(ything)0 1523 y(that)e(y)o(ou)g(w)o(an)o
(t)f(to)h(ha)o(v)o(e)h(in)g(the)g(parser)f(\014le)h(but)g(whic)o(h)g
(need)h(not)e(come)g(b)q(efore)h(the)g(de\014nition)h(of)e
Fk(yyparse)p Fp(.)0 1585 y(F)l(or)d(example,)h(the)f(de\014nitions)i
(of)e Fk(yylex)f Fp(and)i Fk(yyerror)e Fp(often)h(go)g(here.)19
b(See)11 b(Chapter)g(4)g([P)o(arser)f(C-Language)0 1647
y(In)o(terface],)15 b(page)g(57.)62 1784 y(If)h(the)f(last)g(section)h
(is)g(empt)o(y)l(,)e(y)o(ou)h(ma)o(y)g(omit)g(the)g(`)p
Fk(\045\045)p Fp(')f(that)h(separates)f(it)i(from)e(the)h(grammar)f
(rules.)62 1921 y(The)k(Bison)h(parser)e(itself)i(con)o(tains)f(man)o
(y)f(static)h(v)m(ariables)h(whose)e(names)h(start)f(with)h(`)p
Fk(yy)p Fp(')e(and)i(man)o(y)0 1984 y(macros)13 b(whose)h(names)g
(start)f(with)h(`)p Fk(YY)p Fp('.)k(It)c(is)h(a)e(go)q(o)q(d)h(idea)h
(to)e(a)o(v)o(oid)h(using)g(an)o(y)g(suc)o(h)g(names)g(\(except)g
(those)0 2046 y(do)q(cumen)o(ted)i(in)g(this)g(man)o(ual\))f(in)h(the)f
(additional)i(C)e(co)q(de)g(section)h(of)f(the)g(grammar)f(\014le.)0
2271 y Fo(3.2)33 b(Sym)n(b)r(ols,)15 b(T)-6 b(erminal)17
b(and)f(Non)n(terminal)62 2408 y Fl(Sym)o(b)q(ols)i Fp(in)e(Bison)g
(grammars)d(represen)o(t)j(the)f(grammatical)g(classi\014cations)h(of)f
(the)g(language.)62 2545 y(A)j Fl(terminal)g(sym)o(b)q(ol)h
Fp(\(also)f(kno)o(wn)f(as)g(a)g Fl(tok)o(en)g(t)o(yp)q(e)s
Fp(\))g(represen)o(ts)g(a)g(class)h(of)f(syn)o(tactically)h(equiv)m
(alen)o(t)0 2608 y(tok)o(ens.)23 b(Y)l(ou)17 b(use)g(the)g(sym)o(b)q
(ol)g(in)g(grammar)e(rules)i(to)f(mean)h(that)f(a)g(tok)o(en)g(in)i
(that)d(class)i(is)g(allo)o(w)o(ed.)25 b(The)0 2670 y(sym)o(b)q(ol)19
b(is)h(represen)o(ted)f(in)h(the)f(Bison)h(parser)f(b)o(y)g(a)g(n)o
(umeric)h(co)q(de,)g(and)f(the)g Fk(yylex)f Fp(function)i(returns)f(a)p
eop
%%Page: 41 43
41 42 bop 0 -58 a Fp(Chapter)15 b(3:)k(Bison)d(Grammar)e(Files)1247
b(41)0 183 y(tok)o(en)16 b(t)o(yp)q(e)g(co)q(de)h(to)f(indicate)i(what)
e(kind)h(of)f(tok)o(en)g(has)h(b)q(een)g(read.)24 b(Y)l(ou)16
b(don't)g(need)h(to)f(kno)o(w)g(what)g(the)0 246 y(co)q(de)g(v)m(alue)g
(is;)g(y)o(ou)e(can)i(use)f(the)h(sym)o(b)q(ol)f(to)g(stand)g(for)f
(it.)62 388 y(A)e Fl(non)o(terminal)h(sym)o(b)q(ol)h
Fp(stands)d(for)h(a)f(class)i(of)e(syn)o(tactically)i(equiv)m(alen)o(t)
h(groupings.)19 b(The)12 b(sym)o(b)q(ol)g(name)0 451
y(is)k(used)f(in)i(writing)e(grammar)f(rules.)21 b(By)15
b(con)o(v)o(en)o(tion,)g(it)g(should)h(b)q(e)g(all)g(lo)o(w)o(er)f
(case.)62 593 y(Sym)o(b)q(ol)i(names)g(can)f(con)o(tain)h(letters,)f
(digits)h(\(not)f(at)g(the)g(b)q(eginning\),)j(underscores)e(and)f(p)q
(erio)q(ds.)25 b(P)o(e-)0 656 y(rio)q(ds)16 b(mak)o(e)e(sense)i(only)g
(in)g(non)o(terminals.)62 799 y(There)g(are)f(t)o(w)o(o)e(w)o(a)o(ys)i
(of)f(writing)i(terminal)g(sym)o(b)q(ols)f(in)h(the)g(grammar:)37
941 y Fn(\017)30 b Fp(A)19 b Fl(named)h(tok)o(en)f(t)o(yp)q(e)j
Fp(is)e(written)f(with)h(an)f(iden)o(ti\014er,)j(lik)o(e)e(an)f(iden)o
(ti\014er)i(in)f(C.)f(By)h(con)o(v)o(en)o(tion,)g(it)90
1004 y(should)e(b)q(e)g(all)g(upp)q(er)g(case.)25 b(Eac)o(h)17
b(suc)o(h)h(name)f(m)o(ust)f(b)q(e)i(de\014ned)g(with)g(a)e(Bison)i
(declaration)g(suc)o(h)f(as)90 1066 y Fk(\045token)p
Fp(.)i(See)d(Section)g(3.6.1)d([T)l(ok)o(en)i(T)o(yp)q(e)h(Names],)e
(page)h(51.)37 1146 y Fn(\017)30 b Fp(A)20 b Fl(c)o(haracter)e(tok)o
(en)h(t)o(yp)q(e)k Fp(\(or)18 b Fl(literal)j(tok)o(en)p
Fp(\))e(is)h(written)g(in)g(the)g(grammar)e(using)i(the)f(same)h(syn)o
(tax)90 1209 y(used)g(in)f(C)g(for)g(c)o(haracter)f(constan)o(ts;)i
(for)e(example,)i Fk('+')f Fp(is)h(a)e(c)o(haracter)h(tok)o(en)f(t)o
(yp)q(e.)32 b(A)19 b(c)o(haracter)90 1271 y(tok)o(en)14
b(t)o(yp)q(e)g(do)q(esn't)f(need)i(to)f(b)q(e)g(declared)i(unless)f(y)o
(ou)e(need)i(to)f(sp)q(ecify)h(its)f(seman)o(tic)g(v)m(alue)i(data)d(t)
o(yp)q(e)90 1333 y(\(see)i(Section)g(3.5.1)f([Data)f(T)o(yp)q(es)i(of)f
(Seman)o(tic)i(V)l(alues],)f(page)f(45\),)g(asso)q(ciativit)o(y)l(,)h
(or)f(precedence)j(\(see)90 1395 y(Section)f(5.3)e([Op)q(erator)h
(Precedence],)h(page)f(68\).)90 1476 y(By)i(con)o(v)o(en)o(tion,)f(a)h
(c)o(haracter)f(tok)o(en)g(t)o(yp)q(e)g(is)h(used)h(only)f(to)f
(represen)o(t)g(a)h(tok)o(en)f(that)g(consists)g(of)h(that)90
1538 y(particular)c(c)o(haracter.)18 b(Th)o(us,)13 b(the)f(tok)o(en)g
(t)o(yp)q(e)h Fk('+')f Fp(is)h(used)g(to)f(represen)o(t)g(the)g(c)o
(haracter)g(`)p Fk(+)p Fp(')g(as)g(a)g(tok)o(en.)90 1601
y(Nothing)17 b(enforces)g(this)h(con)o(v)o(en)o(tion,)f(but)g(if)h(y)o
(ou)e(depart)h(from)g(it,)g(y)o(our)f(program)g(will)j(confuse)e(other)
90 1663 y(readers.)90 1743 y(All)j(the)f(usual)g(escap)q(e)h(sequences)
g(used)f(in)g(c)o(haracter)f(literals)i(in)g(C)e(can)h(b)q(e)h(used)f
(in)h(Bison)f(as)f(w)o(ell,)90 1806 y(but)g(y)o(ou)g(m)o(ust)f(not)h
(use)g(the)g(n)o(ull)h(c)o(haracter)f(as)f(a)h(c)o(haracter)f(literal)i
(b)q(ecause)g(its)f(ASCI)q(I)i(co)q(de,)e(zero,)90 1868
y(is)g(the)f(co)q(de)i Fk(yylex)d Fp(returns)i(for)e(end-of-input)j
(\(see)f(Section)g(4.2.1)e([Calling)i(Con)o(v)o(en)o(tion)g(for)e
Fk(yylex)p Fp(],)90 1930 y(page)f(58\).)62 2091 y(Ho)o(w)j(y)o(ou)g(c)o
(ho)q(ose)h(to)e(write)i(a)f(terminal)h(sym)o(b)q(ol)g(has)g(no)f
(e\013ect)g(on)h(its)f(grammatical)g(meaning.)31 b(That)0
2154 y(dep)q(ends)17 b(only)f(on)f(where)g(it)h(app)q(ears)f(in)h
(rules)g(and)f(on)g(when)h(the)f(parser)g(function)h(returns)f(that)g
(sym)o(b)q(ol.)62 2296 y(The)21 b(v)m(alue)h(returned)f(b)o(y)f
Fk(yylex)g Fp(is)h(alw)o(a)o(ys)f(one)g(of)h(the)f(terminal)h(sym)o(b)q
(ols)g(\(or)f(0)g(for)g(end-of-input\).)0 2359 y(Whic)o(hev)o(er)e(w)o
(a)o(y)d(y)o(ou)i(write)g(the)g(tok)o(en)f(t)o(yp)q(e)h(in)h(the)f
(grammar)e(rules,)j(y)o(ou)f(write)g(it)g(the)g(same)f(w)o(a)o(y)g(in)i
(the)0 2421 y(de\014nition)f(of)d Fk(yylex)p Fp(.)19
b(The)c(n)o(umeric)g(co)q(de)h(for)e(a)g(c)o(haracter)g(tok)o(en)h(t)o
(yp)q(e)f(is)i(simply)g(the)e(ASCI)q(I)i(co)q(de)g(for)e(the)0
2483 y(c)o(haracter,)i(so)g Fk(yylex)g Fp(can)h(use)g(the)g(iden)o
(tical)h(c)o(haracter)e(constan)o(t)g(to)g(generate)h(the)f(requisite)i
(co)q(de.)25 b(Eac)o(h)0 2545 y(named)17 b(tok)o(en)g(t)o(yp)q(e)g(b)q
(ecomes)g(a)g(C)g(macro)f(in)i(the)f(parser)g(\014le,)h(so)f
Fk(yylex)f Fp(can)h(use)g(the)g(name)g(to)g(stand)g(for)0
2608 y(the)g(co)q(de.)24 b(\(This)17 b(is)g(wh)o(y)g(p)q(erio)q(ds)g
(don't)f(mak)o(e)h(sense)g(in)g(terminal)g(sym)o(b)q(ols.\))24
b(See)18 b(Section)f(4.2.1)e([Calling)0 2670 y(Con)o(v)o(en)o(tion)g
(for)f Fk(yylex)p Fp(],)g(page)h(58.)p eop
%%Page: 42 44
42 43 bop 0 -58 a Fp(42)1697 b(Bison)16 b(1.20)62 183
y(If)h Fk(yylex)f Fp(is)h(de\014ned)h(in)f(a)g(separate)f(\014le,)h(y)o
(ou)f(need)i(to)e(arrange)f(for)h(the)h(tok)o(en-t)o(yp)q(e)f(macro)g
(de\014nitions)0 246 y(to)h(b)q(e)h(a)o(v)m(ailable)i(there.)27
b(Use)18 b(the)g(`)p Fk(-d)p Fp(')e(option)i(when)h(y)o(ou)e(run)h
(Bison,)g(so)g(that)f(it)h(will)h(write)f(these)g(macro)0
308 y(de\014nitions)e(in)o(to)f(a)f(separate)g(header)h(\014le)g(`)p
Fl(name)p Fk(.tab.h)p Fp(')e(whic)o(h)j(y)o(ou)e(can)g(include)j(in)f
(the)e(other)g(source)h(\014les)0 370 y(that)f(need)j(it.)j(See)15
b(Chapter)g(9)g([In)o(v)o(oking)g(Bison],)h(page)f(87.)62
513 y(The)j(sym)o(b)q(ol)g Fk(error)f Fp(is)h(a)f(terminal)i(sym)o(b)q
(ol)e(reserv)o(ed)h(for)f(error)g(reco)o(v)o(ery)g(\(see)g(Chapter)h(6)
f([Error)f(Re-)0 575 y(co)o(v)o(ery],)h(page)h(77\);)g(y)o(ou)g
(shouldn't)g(use)h(it)f(for)f(an)o(y)h(other)f(purp)q(ose.)29
b(In)19 b(particular,)g Fk(yylex)e Fp(should)i(nev)o(er)0
638 y(return)c(this)h(v)m(alue.)0 916 y Fo(3.3)33 b(Syn)n(tax)16
b(of)f(Grammar)g(Rules)62 1059 y Fp(A)h(Bison)f(grammar)f(rule)i(has)f
(the)g(follo)o(wing)h(general)g(form:)120 1189 y Fl(result)q
Fk(:)24 b Fl(comp)q(onen)o(ts)r Fh(:)8 b(:)g(:)311 1239
y Fk(;)0 1382 y Fp(where)k Fl(result)g Fp(is)g(the)g(non)o(terminal)g
(sym)o(b)q(ol)g(that)e(this)i(rule)g(describ)q(es)h(and)f
Fl(comp)q(onen)o(ts)h Fp(are)e(v)m(arious)h(terminal)0
1444 y(and)j(non)o(terminal)h(sym)o(b)q(ols)g(that)e(are)h(put)g
(together)g(b)o(y)g(this)h(rule)g(\(see)f(Section)h(3.2)e([Sym)o(b)q
(ols],)h(page)g(40\).)62 1587 y(F)l(or)g(example,)120
1726 y Fk(exp:)143 b(exp)23 b('+')h(exp)311 1788 y(;)0
1924 y Fp(sa)o(ys)17 b(that)g(t)o(w)o(o)f(groupings)i(of)f(t)o(yp)q(e)h
Fk(exp)p Fp(,)f(with)h(a)g(`)p Fk(+)p Fp(')e(tok)o(en)i(in)g(b)q(et)o
(w)o(een,)g(can)g(b)q(e)g(com)o(bined)h(in)o(to)f(a)f(larger)0
1986 y(grouping)f(of)e(t)o(yp)q(e)i Fk(exp)p Fp(.)62
2129 y(Whitespace)j(in)f(rules)h(is)f(signi\014can)o(t)h(only)f(to)f
(separate)g(sym)o(b)q(ols.)28 b(Y)l(ou)18 b(can)g(add)g(extra)f
(whitespace)h(as)0 2191 y(y)o(ou)d(wish.)62 2334 y(Scattered)h(among)g
(the)g(comp)q(onen)o(ts)g(can)h(b)q(e)g Fl(actions)h
Fp(that)d(determine)i(the)g(seman)o(tics)f(of)g(the)g(rule.)24
b(An)0 2397 y(action)15 b(lo)q(oks)h(lik)o(e)g(this:)120
2527 y Fk({)p Fl(C)f(statemen)o(ts)r Fk(})0 2670 y Fp(Usually)f(there)e
(is)h(only)g(one)g(action)f(and)h(it)g(follo)o(ws)f(the)h(comp)q(onen)o
(ts.)19 b(See)13 b(Section)g(3.5.3)e([Actions],)i(page)f(45.)p
eop
%%Page: 43 45
43 44 bop 0 -58 a Fp(Chapter)15 b(3:)k(Bison)d(Grammar)e(Files)1247
b(43)62 183 y(Multiple)14 b(rules)e(for)f(the)g(same)g
Fl(result)i Fp(can)f(b)q(e)g(written)g(separately)f(or)g(can)h(b)q(e)g
(joined)g(with)g(the)f(v)o(ertical-bar)0 246 y(c)o(haracter)j(`)p
Fk(|)p Fp(')h(as)g(follo)o(ws:)120 382 y Fl(result)q
Fk(:)96 b Fl(rule1-comp)q(onen)o(ts)r Fh(:)8 b(:)g(:)311
444 y Fk(|)24 b Fl(rule2-comp)q(onen)o(ts)r Fh(:)8 b(:)g(:)311
506 y(:)g(:)g(:)311 569 y Fk(;)0 710 y Fp(They)15 b(are)g(still)i
(considered)g(distinct)f(rules)g(ev)o(en)f(when)h(joined)g(in)g(this)g
(w)o(a)o(y)l(.)62 859 y(If)d Fl(comp)q(onen)o(ts)i Fp(in)f(a)e(rule)i
(is)f(empt)o(y)l(,)g(it)g(means)g(that)f Fl(result)j
Fp(can)d(matc)o(h)h(the)g(empt)o(y)f(string.)19 b(F)l(or)12
b(example,)0 921 y(here)k(is)f(ho)o(w)g(to)g(de\014ne)h(a)f
(comma-separated)f(sequence)j(of)d(zero)h(or)g(more)g
Fk(exp)g Fp(groupings:)120 1067 y Fk(expseq:)71 b(/*)23
b(empty)g(*/)311 1129 y(|)h(expseq1)311 1192 y(;)120
1265 y(expseq1:)47 b(exp)311 1327 y(|)24 b(expseq1)f(',')g(exp)311
1389 y(;)0 1531 y Fp(It)15 b(is)h(customary)e(to)h(write)g(a)g(commen)o
(t)g(`)p Fk(/*)f(empty)h(*/)p Fp(')f(in)i(eac)o(h)f(rule)i(with)e(no)g
(comp)q(onen)o(ts.)0 1861 y Fo(3.4)33 b(Recursiv)n(e)16
b(Rules)62 2010 y Fp(A)d(rule)h(is)g(called)g Fl(recursiv)o(e)j
Fp(when)c(its)h Fl(result)g Fp(non)o(terminal)g(app)q(ears)f(also)g(on)
g(its)g(righ)o(t)g(hand)g(side.)21 b(Nearly)0 2073 y(all)15
b(Bison)g(grammars)e(need)i(to)e(use)i(recursion,)g(b)q(ecause)g(that)e
(is)i(the)f(only)h(w)o(a)o(y)e(to)h(de\014ne)h(a)f(sequence)i(of)d(an)o
(y)0 2135 y(n)o(um)o(b)q(er)i(of)f(somethings.)20 b(Consider)c(this)f
(recursiv)o(e)g(de\014nition)i(of)d(a)g(comma-separated)g(sequence)i
(of)f(one)f(or)0 2197 y(more)h(expressions:)120 2342
y Fk(expseq1:)47 b(exp)311 2404 y(|)24 b(expseq1)f(',')g(exp)311
2466 y(;)0 2608 y Fp(Since)c(the)e(recursiv)o(e)g(use)h(of)e
Fk(expseq1)g Fp(is)i(the)f(leftmost)g(sym)o(b)q(ol)g(in)h(the)f(righ)o
(t)g(hand)g(side,)h(w)o(e)f(call)h(this)g Fl(left)0 2670
y(recursion)p Fp(.)j(By)15 b(con)o(trast,)e(here)j(the)f(same)g
(construct)g(is)h(de\014ned)g(using)g Fl(righ)o(t)f(recursion)p
Fp(:)p eop
%%Page: 44 46
44 45 bop 0 -58 a Fp(44)1697 b(Bison)16 b(1.20)120 183
y Fk(expseq1:)47 b(exp)311 246 y(|)24 b(exp)f(',')h(expseq1)311
308 y(;)0 449 y Fp(An)o(y)16 b(kind)h(of)f(sequence)h(can)g(b)q(e)f
(de\014ned)i(using)f(either)f(left)h(recursion)g(or)e(righ)o(t)h
(recursion,)h(but)f(y)o(ou)g(should)0 512 y(alw)o(a)o(ys)d(use)i(left)f
(recursion,)h(b)q(ecause)g(it)f(can)g(parse)g(a)g(sequence)h(of)f(an)o
(y)f(n)o(um)o(b)q(er)i(of)e(elemen)o(ts)i(with)g(b)q(ounded)0
574 y(stac)o(k)k(space.)36 b(Righ)o(t)21 b(recursion)g(uses)f(up)h
(space)f(on)h(the)f(Bison)h(stac)o(k)e(in)i(prop)q(ortion)g(to)e(the)i
(n)o(um)o(b)q(er)f(of)0 636 y(elemen)o(ts)d(in)h(the)f(sequence,)h(b)q
(ecause)g(all)g(the)e(elemen)o(ts)i(m)o(ust)e(b)q(e)i(shifted)f(on)o
(to)f(the)h(stac)o(k)f(b)q(efore)h(the)g(rule)0 698 y(can)k(b)q(e)h
(applied)h(ev)o(en)e(once.)37 b(See)22 b(Chapter)f(5)f([The)h(Bison)h
(P)o(arser)e(Algorithm)h(],)h(page)e(65,)i(for)e(further)0
761 y(explanation)c(of)f(this.)62 910 y Fl(Indirect)k
Fp(or)c Fl(m)o(utual)j Fp(recursion)f(o)q(ccurs)f(when)h(the)f(result)g
(of)g(the)g(rule)g(do)q(es)h(not)e(app)q(ear)i(directly)g(on)f(its)0
972 y(righ)o(t)e(hand)h(side,)g(but)f(do)q(es)h(app)q(ear)g(in)g(rules)
g(for)f(other)g(non)o(terminals)h(whic)o(h)g(do)f(app)q(ear)h(on)f(its)
g(righ)o(t)h(hand)0 1034 y(side.)62 1183 y(F)l(or)g(example:)120
1328 y Fk(expr:)119 b(primary)311 1390 y(|)24 b(primary)f('+')g
(primary)311 1452 y(;)120 1526 y(primary:)47 b(constant)311
1588 y(|)24 b('\(')f(expr)g('\)')311 1650 y(;)0 1792
y Fp(de\014nes)16 b(t)o(w)o(o)e(m)o(utually-recursiv)o(e)j(non)o
(terminals,)e(since)i(eac)o(h)e(refers)g(to)g(the)g(other.)0
2123 y Fo(3.5)33 b(De\014ning)15 b(Language)g(Seman)n(tics)62
2272 y Fp(The)f(grammar)e(rules)j(for)e(a)g(language)h(determine)h
(only)f(the)f(syn)o(tax.)19 b(The)14 b(seman)o(tics)g(are)f(determined)
i(b)o(y)0 2334 y(the)h(seman)o(tic)g(v)m(alues)h(asso)q(ciated)f(with)h
(v)m(arious)f(tok)o(ens)g(and)g(groupings,)g(and)g(b)o(y)g(the)g
(actions)g(tak)o(en)f(when)0 2397 y(v)m(arious)h(groupings)f(are)g
(recognized.)62 2545 y(F)l(or)10 b(example,)j(the)d(calculator)i
(calculates)g(prop)q(erly)f(b)q(ecause)h(the)f(v)m(alue)h(asso)q
(ciated)f(with)g(eac)o(h)g(expression)0 2608 y(is)18
b(the)g(prop)q(er)g(n)o(um)o(b)q(er;)h(it)g(adds)e(prop)q(erly)i(b)q
(ecause)g(the)f(action)g(for)f(the)h(grouping)g(`)p Fl(x)g
Fk(+)d Fl(y)t Fp(')i(is)i(to)e(add)h(the)0 2670 y(n)o(um)o(b)q(ers)d
(asso)q(ciated)h(with)f Fl(x)k Fp(and)c Fl(y)p Fp(.)p
eop
%%Page: 45 47
45 46 bop 0 -58 a Fp(Chapter)15 b(3:)k(Bison)d(Grammar)e(Files)1247
b(45)0 183 y Fj(3.5.1)30 b(Data)15 b(T)n(yp)r(es)g(of)g(Seman)n(tic)g
(V)-5 b(alues)62 324 y Fp(In)18 b(a)f(simple)h(program)e(it)h(ma)o(y)f
(b)q(e)i(su\016cien)o(t)g(to)e(use)h(the)h(same)e(data)h(t)o(yp)q(e)g
(for)f(the)h(seman)o(tic)g(v)m(alues)h(of)0 386 y(all)g(language)e
(constructs.)24 b(This)18 b(w)o(as)e(true)g(in)i(the)e(RPN)h(and)g
(in\014x)h(calculator)f(examples)h(\(see)e(Section)i(2.1)0
449 y([Rev)o(erse)d(P)o(olish)h(Notation)f(Calculator],)g(page)g(21\).)
62 589 y(Bison's)k(default)f(is)h(to)f(use)g(t)o(yp)q(e)g
Fk(int)g Fp(for)g(all)h(seman)o(tic)f(v)m(alues.)30 b(T)l(o)18
b(sp)q(ecify)i(some)d(other)h(t)o(yp)q(e,)h(de\014ne)0
652 y Fk(YYSTYPE)14 b Fp(as)h(a)g(macro,)f(lik)o(e)i(this:)120
780 y Fk(#define)23 b(YYSTYPE)g(double)0 921 y Fp(This)c(macro)e
(de\014nition)j(m)o(ust)d(go)g(in)i(the)f(C)g(declarations)h(section)f
(of)g(the)g(grammar)e(\014le)j(\(see)f(Section)h(3.1)0
983 y([Outline)e(of)e(a)f(Bison)i(Grammar],)d(page)i(39\).)0
1225 y Fj(3.5.2)30 b(More)15 b(Than)g(One)g(V)-5 b(alue)15
b(T)n(yp)r(e)62 1366 y Fp(In)f(most)e(programs,)g(y)o(ou)h(will)i(need)
f(di\013eren)o(t)g(data)e(t)o(yp)q(es)h(for)g(di\013eren)o(t)g(kinds)h
(of)f(tok)o(ens)g(and)g(groupings.)0 1429 y(F)l(or)j(example,)i(a)f(n)o
(umeric)h(constan)o(t)e(ma)o(y)h(need)h(t)o(yp)q(e)f
Fk(int)f Fp(or)h Fk(long)p Fp(,)f(while)j(a)e(string)g(constan)o(t)f
(needs)i(t)o(yp)q(e)0 1491 y Fk(char)d(*)p Fp(,)f(and)i(an)f(iden)o
(ti\014er)i(migh)o(t)e(need)h(a)f(p)q(oin)o(ter)g(to)g(an)g(en)o(try)g
(in)h(the)f(sym)o(b)q(ol)h(table.)62 1632 y(T)l(o)e(use)h(more)e(than)i
(one)f(data)f(t)o(yp)q(e)i(for)e(seman)o(tic)i(v)m(alues)g(in)g(one)f
(parser,)g(Bison)h(requires)g(y)o(ou)f(to)f(do)h(t)o(w)o(o)0
1694 y(things:)37 1835 y Fn(\017)30 b Fp(Sp)q(ecify)21
b(the)f(en)o(tire)g(collection)h(of)e(p)q(ossible)j(data)d(t)o(yp)q
(es,)h(with)g(the)g Fk(\045union)e Fp(Bison)j(declaration)f(\(see)90
1897 y(Section)c(3.6.3)e([The)h(Collection)h(of)f(V)l(alue)h(T)o(yp)q
(es],)f(page)g(52\).)37 1976 y Fn(\017)30 b Fp(Cho)q(ose)13
b(one)f(of)h(those)f(t)o(yp)q(es)h(for)f(eac)o(h)h(sym)o(b)q(ol)g
(\(terminal)g(or)f(non)o(terminal\))h(for)f(whic)o(h)i(seman)o(tic)f(v)
m(alues)90 2038 y(are)i(used.)21 b(This)15 b(is)h(done)g(for)e(tok)o
(ens)h(with)h(the)f Fk(\045token)f Fp(Bison)i(declaration)g(\(see)g
(Section)g(3.6.1)d([T)l(ok)o(en)90 2100 y(T)o(yp)q(e)i(Names],)f(page)h
(51\))g(and)g(for)f(groupings)i(with)f(the)g Fk(\045type)g
Fp(Bison)h(declaration)f(\(see)h(Section)g(3.6.4)90 2162
y([Non)o(terminal)f(Sym)o(b)q(ols],)g(page)h(53\).)0
2405 y Fj(3.5.3)30 b(Actions)62 2545 y Fp(An)12 b(action)f(accompanies)
h(a)f(syn)o(tactic)g(rule)i(and)e(con)o(tains)g(C)g(co)q(de)h(to)f(b)q
(e)h(executed)g(eac)o(h)f(time)h(an)f(instance)0 2608
y(of)i(that)f(rule)i(is)f(recognized.)21 b(The)13 b(task)f(of)h(most)f
(actions)i(is)f(to)g(compute)g(a)f(seman)o(tic)i(v)m(alue)g(for)e(the)i
(grouping)0 2670 y(built)j(b)o(y)e(the)g(rule)h(from)e(the)i(seman)o
(tic)f(v)m(alues)i(asso)q(ciated)e(with)g(tok)o(ens)g(or)g(smaller)h
(groupings.)p eop
%%Page: 46 48
46 47 bop 0 -58 a Fp(46)1697 b(Bison)16 b(1.20)62 183
y(An)h(action)f(consists)h(of)f(C)g(statemen)o(ts)f(surrounded)i(b)o(y)
f(braces,)g(m)o(uc)o(h)h(lik)o(e)g(a)f(comp)q(ound)h(statemen)o(t)e(in)
0 246 y(C.)e(It)h(can)g(b)q(e)h(placed)g(at)e(an)o(y)h(p)q(osition)h
(in)g(the)f(rule;)h(it)f(is)g(executed)h(at)e(that)h(p)q(osition.)20
b(Most)13 b(rules)i(ha)o(v)o(e)e(just)0 308 y(one)i(action)f(at)g(the)h
(end)g(of)f(the)h(rule,)g(follo)o(wing)g(all)h(the)e(comp)q(onen)o(ts.)
20 b(Actions)15 b(in)h(the)e(middle)j(of)d(a)g(rule)h(are)0
370 y(tric)o(ky)g(and)h(used)f(only)h(for)f(sp)q(ecial)i(purp)q(oses)e
(\(see)h(Section)g(3.5.5)d([Actions)j(in)g(Mid-Rule],)g(page)f(48\).)62
530 y(The)f(C)e(co)q(de)i(in)g(an)f(action)g(can)h(refer)f(to)f(the)h
(seman)o(tic)h(v)m(alues)g(of)f(the)g(comp)q(onen)o(ts)g(matc)o(hed)g
(b)o(y)g(the)g(rule)0 592 y(with)18 b(the)f(construct)g
Fk($)p Fl(n)p Fp(,)g(whic)o(h)h(stands)f(for)g(the)g(v)m(alue)i(of)d
(the)i Fl(n)p Fp(th)f(comp)q(onen)o(t.)26 b(The)18 b(seman)o(tic)f(v)m
(alue)i(for)0 655 y(the)14 b(grouping)g(b)q(eing)h(constructed)f(is)g
Fk($$)p Fp(.)19 b(\(Bison)14 b(translates)f(b)q(oth)h(of)f(these)h
(constructs)f(in)o(to)h(arra)o(y)e(elemen)o(t)0 717 y(references)k
(when)g(it)f(copies)h(the)f(actions)h(in)o(to)f(the)g(parser)g
(\014le.\))62 877 y(Here)h(is)f(a)g(t)o(ypical)h(example:)120
1033 y Fk(exp:)95 b Fh(:)8 b(:)g(:)311 1095 y Fk(|)24
b(exp)f('+')h(exp)406 1157 y({)g($$)g(=)f($1)h(+)g($3;)f(})0
1310 y Fp(This)c(rule)h(constructs)e(an)g Fk(exp)g Fp(from)g(t)o(w)o(o)
f(smaller)j Fk(exp)e Fp(groupings)g(connected)i(b)o(y)e(a)h(plus-sign)h
(tok)o(en.)29 b(In)0 1372 y(the)15 b(action,)g Fk($1)g
Fp(and)h Fk($3)e Fp(refer)i(to)e(the)h(seman)o(tic)h(v)m(alues)g(of)f
(the)g(t)o(w)o(o)f(comp)q(onen)o(t)h Fk(exp)g Fp(groupings,)g(whic)o(h)
h(are)0 1434 y(the)f(\014rst)g(and)g(third)g(sym)o(b)q(ols)h(on)f(the)g
(righ)o(t)f(hand)i(side)g(of)e(the)h(rule.)21 b(The)15
b(sum)g(is)h(stored)e(in)o(to)h Fk($$)g Fp(so)f(that)h(it)0
1497 y(b)q(ecomes)h(the)g(seman)o(tic)f(v)m(alue)i(of)e(the)h
(addition-expression)h(just)f(recognized)g(b)o(y)g(the)f(rule.)22
b(If)15 b(there)h(w)o(ere)f(a)0 1559 y(useful)h(seman)o(tic)g(v)m(alue)
g(asso)q(ciated)g(with)f(the)g(`)p Fk(+)p Fp(')g(tok)o(en,)f(it)h
(could)i(b)q(e)f(referred)f(to)f(as)h Fk($2)p Fp(.)62
1719 y(If)i(y)o(ou)g(don't)g(sp)q(ecify)h(an)f(action)g(for)f(a)h
(rule,)h(Bison)f(supplies)i(a)e(default:)24 b Fk($$)15
b(=)g($1)p Fp(.)h(Th)o(us,)h(the)g(v)m(alue)h(of)0 1781
y(the)c(\014rst)g(sym)o(b)q(ol)g(in)h(the)f(rule)g(b)q(ecomes)h(the)f
(v)m(alue)h(of)f(the)g(whole)g(rule.)21 b(Of)14 b(course,)g(the)g
(default)g(rule)h(is)f(v)m(alid)0 1844 y(only)j(if)g(the)f(t)o(w)o(o)f
(data)h(t)o(yp)q(es)g(matc)o(h.)23 b(There)16 b(is)h(no)g(meaningful)g
(default)g(action)g(for)e(an)i(empt)o(y)f(rule;)h(ev)o(ery)0
1906 y(empt)o(y)e(rule)h(m)o(ust)f(ha)o(v)o(e)f(an)h(explicit)j(action)
d(unless)i(the)e(rule's)g(v)m(alue)i(do)q(es)e(not)g(matter.)62
2066 y Fk($)p Fl(n)h Fp(with)g Fl(n)g Fp(zero)g(or)f(negativ)o(e)h(is)g
(allo)o(w)o(ed)g(for)f(reference)h(to)f(tok)o(ens)h(and)f(groupings)h
(on)g(the)g(stac)o(k)f Fl(b)q(efore)0 2128 y Fp(those)f(that)g(matc)o
(h)g(the)h(curren)o(t)g(rule.)20 b(This)c(is)f(a)f(v)o(ery)g(risky)h
(practice,)h(and)e(to)g(use)h(it)g(reliably)i(y)o(ou)d(m)o(ust)g(b)q(e)
0 2190 y(certain)g(of)f(the)g(con)o(text)g(in)h(whic)o(h)g(the)g(rule)g
(is)g(applied.)21 b(Here)14 b(is)g(a)f(case)g(in)h(whic)o(h)g(y)o(ou)g
(can)f(use)h(this)g(reliably:)120 2346 y Fk(foo:)143
b(expr)23 b(bar)g('+')h(expr)47 b({)24 b Fh(:)8 b(:)g(:)22
b Fk(})311 2408 y(|)i(expr)f(bar)g('-')h(expr)47 b({)24
b Fh(:)8 b(:)g(:)22 b Fk(})311 2471 y(;)120 2544 y(bar:)143
b(/*)23 b(empty)g(*/)311 2606 y({)h(previous_expr)e(=)h($0;)h(})311
2668 y(;)p eop
%%Page: 47 49
47 48 bop 0 -58 a Fp(Chapter)15 b(3:)k(Bison)d(Grammar)e(Files)1247
b(47)62 183 y(As)21 b(long)g(as)g Fk(bar)f Fp(is)i(used)f(only)g(in)h
(the)f(fashion)g(sho)o(wn)g(here,)h Fk($0)f Fp(alw)o(a)o(ys)f(refers)h
(to)f(the)h Fk(expr)f Fp(whic)o(h)0 246 y(precedes)c
Fk(bar)f Fp(in)h(the)f(de\014nition)i(of)e Fk(foo)p Fp(.)0
688 y Fj(3.5.4)30 b(Data)15 b(T)n(yp)r(es)g(of)g(V)-5
b(alues)15 b(in)g(Actions)62 851 y Fp(If)g(y)o(ou)f(ha)o(v)o(e)f(c)o
(hosen)i(a)f(single)h(data)f(t)o(yp)q(e)g(for)g(seman)o(tic)g(v)m
(alues,)h(the)g Fk($$)e Fp(and)i Fk($)p Fl(n)f Fp(constructs)g(alw)o(a)
o(ys)f(ha)o(v)o(e)0 913 y(that)h(data)h(t)o(yp)q(e.)62
1076 y(If)e(y)o(ou)f(ha)o(v)o(e)f(used)i Fk(\045union)e
Fp(to)h(sp)q(ecify)i(a)d(v)m(ariet)o(y)i(of)f(data)f(t)o(yp)q(es,)i
(then)f(y)o(ou)g(m)o(ust)g(declare)h(a)f(c)o(hoice)h(among)0
1139 y(these)18 b(t)o(yp)q(es)f(for)g(eac)o(h)h(terminal)g(or)f(non)o
(terminal)i(sym)o(b)q(ol)f(that)f(can)g(ha)o(v)o(e)g(a)h(seman)o(tic)g
(v)m(alue.)28 b(Then)18 b(eac)o(h)0 1201 y(time)d(y)o(ou)g(use)g
Fk($$)f Fp(or)g Fk($)p Fl(n)p Fp(,)h(its)g(data)f(t)o(yp)q(e)h(is)g
(determined)h(b)o(y)f(whic)o(h)g(sym)o(b)q(ol)g(it)g(refers)g(to)f(in)i
(the)f(rule.)20 b(In)c(this)0 1263 y(example,)120 1422
y Fk(exp:)95 b Fh(:)8 b(:)g(:)311 1484 y Fk(|)24 b(exp)f('+')h(exp)406
1547 y({)g($$)g(=)f($1)h(+)g($3;)f(})0 1702 y($1)18 b
Fp(and)g Fk($3)g Fp(refer)g(to)f(instances)i(of)f Fk(exp)p
Fp(,)g(so)g(they)g(all)h(ha)o(v)o(e)e(the)i(data)e(t)o(yp)q(e)h
(declared)i(for)d(the)h(non)o(terminal)0 1765 y(sym)o(b)q(ol)g
Fk(exp)p Fp(.)26 b(If)18 b Fk($2)f Fp(w)o(ere)g(used,)i(it)e(w)o(ould)h
(ha)o(v)o(e)f(the)h(data)f(t)o(yp)q(e)g(declared)i(for)e(the)h
(terminal)g(sym)o(b)q(ol)g Fk('+')p Fp(,)0 1827 y(whatev)o(er)d(that)f
(migh)o(t)h(b)q(e.)62 1990 y(Alternativ)o(ely)l(,)j(y)o(ou)d(can)h(sp)q
(ecify)i(the)e(data)f(t)o(yp)q(e)h(when)h(y)o(ou)f(refer)g(to)f(the)h
(v)m(alue,)h(b)o(y)f(inserting)h(`)p Fk(<)p Fl(t)o(yp)q(e)s
Fk(>)p Fp(')0 2052 y(after)h(the)g(`)p Fk($)p Fp(')f(at)h(the)g(b)q
(eginning)j(of)d(the)g(reference.)30 b(F)l(or)17 b(example,)j(if)f(y)o
(ou)f(ha)o(v)o(e)f(de\014ned)j(t)o(yp)q(es)e(as)g(sho)o(wn)0
2115 y(here:)120 2265 y Fk(\045union)23 b({)168 2327
y(int)g(itype;)168 2390 y(double)g(dtype;)120 2452 y(})0
2608 y Fp(then)16 b(y)o(ou)f(can)h(write)f Fk($<itype>1)f
Fp(to)h(refer)g(to)g(the)h(\014rst)f(subunit)i(of)e(the)g(rule)h(as)g
(an)f(in)o(teger,)g(or)g Fk($<dtype>1)0 2670 y Fp(to)g(refer)g(to)f(it)
i(as)e(a)h(double.)p eop
%%Page: 48 50
48 49 bop 0 -58 a Fp(48)1697 b(Bison)16 b(1.20)0 183
y Fj(3.5.5)30 b(Actions)15 b(in)h(Mid-Rule)62 332 y Fp(Occasionally)h
(it)e(is)g(useful)g(to)f(put)h(an)g(action)f(in)i(the)e(middle)j(of)d
(a)g(rule.)21 b(These)15 b(actions)f(are)h(written)f(just)0
394 y(lik)o(e)h(usual)f(end-of-rule)h(actions,)f(but)f(they)h(are)f
(executed)i(b)q(efore)e(the)h(parser)f(ev)o(en)h(recognizes)h(the)e
(follo)o(wing)0 457 y(comp)q(onen)o(ts.)62 605 y(A)k(mid-rule)i(action)
f(ma)o(y)e(refer)h(to)f(the)i(comp)q(onen)o(ts)f(preceding)h(it)g
(using)g Fk($)p Fl(n)p Fp(,)f(but)g(it)h(ma)o(y)e(not)h(refer)g(to)0
668 y(subsequen)o(t)f(comp)q(onen)o(ts)f(b)q(ecause)h(it)g(is)f(run)h
(b)q(efore)f(they)h(are)f(parsed.)62 817 y(The)h(mid-rule)g(action)g
(itself)g(coun)o(ts)e(as)h(one)g(of)g(the)g(comp)q(onen)o(ts)g(of)g
(the)g(rule.)21 b(This)15 b(mak)o(es)g(a)g(di\013erence)0
879 y(when)h(there)g(is)g(another)f(action)h(later)f(in)i(the)f(same)f
(rule)h(\(and)g(usually)h(there)e(is)h(another)g(at)f(the)g(end\):)21
b(y)o(ou)0 941 y(ha)o(v)o(e)15 b(to)f(coun)o(t)h(the)g(actions)h(along)
f(with)g(the)h(sym)o(b)q(ols)f(when)h(w)o(orking)f(out)f(whic)o(h)i(n)o
(um)o(b)q(er)g Fl(n)f Fp(to)g(use)g(in)h Fk($)p Fl(n)p
Fp(.)62 1090 y(The)22 b(mid-rule)i(action)e(can)g(also)g(ha)o(v)o(e)f
(a)g(seman)o(tic)h(v)m(alue.)41 b(The)22 b(action)g(can)g(set)g(its)g
(v)m(alue)h(with)f(an)0 1152 y(assignmen)o(t)17 b(to)g
Fk($$)p Fp(,)g(and)g(actions)h(later)f(in)h(the)g(rule)g(can)f(refer)g
(to)g(the)g(v)m(alue)i(using)f Fk($)p Fl(n)p Fp(.)26
b(Since)19 b(there)e(is)h(no)0 1214 y(sym)o(b)q(ol)d(to)f(name)h(the)f
(action,)h(there)g(is)g(no)f(w)o(a)o(y)g(to)g(declare)i(a)e(data)g(t)o
(yp)q(e)h(for)f(the)h(v)m(alue)g(in)h(adv)m(ance,)f(so)f(y)o(ou)0
1277 y(m)o(ust)h(use)g(the)g(`)p Fk($<)p Fh(:)8 b(:)g(:)n
Fk(>)p Fp(')14 b(construct)h(to)g(sp)q(ecify)h(a)f(data)g(t)o(yp)q(e)g
(eac)o(h)g(time)h(y)o(ou)f(refer)g(to)f(this)i(v)m(alue.)62
1426 y(There)g(is)g(no)g(w)o(a)o(y)e(to)h(set)h(the)f(v)m(alue)i(of)e
(the)h(en)o(tire)g(rule)g(with)g(a)g(mid-rule)h(action,)f(b)q(ecause)g
(assignmen)o(ts)0 1488 y(to)e Fk($$)h Fp(do)f(not)h(ha)o(v)o(e)f(that)g
(e\013ect.)20 b(The)15 b(only)g(w)o(a)o(y)f(to)g(set)h(the)g(v)m(alue)h
(for)e(the)h(en)o(tire)g(rule)h(is)f(with)g(an)g(ordinary)0
1550 y(action)g(at)g(the)g(end)h(of)f(the)g(rule.)62
1699 y(Here)g(is)f(an)g(example)h(from)f(a)g(h)o(yp)q(othetical)h
(compiler,)g(handling)h(a)e Fk(let)g Fp(statemen)o(t)f(that)g(lo)q(oks)
h(lik)o(e)i(`)p Fk(let)0 1761 y(\()p Fl(v)m(ariable)s
Fk(\))g Fl(statemen)o(t)q Fp(')e(and)h(serv)o(es)g(to)g(create)g(a)g(v)
m(ariable)i(named)e Fl(v)m(ariable)20 b Fp(temp)q(orarily)c(for)e(the)i
(duration)0 1823 y(of)e Fl(statemen)o(t)p Fp(.)19 b(T)l(o)14
b(parse)h(this)g(construct,)f(w)o(e)g(m)o(ust)g(put)h
Fl(v)m(ariable)k Fp(in)o(to)14 b(the)h(sym)o(b)q(ol)g(table)g(while)h
Fl(statemen)o(t)0 1886 y Fp(is)g(parsed,)f(then)g(remo)o(v)o(e)g(it)g
(afterw)o(ard.)k(Here)c(is)h(ho)o(w)e(it)i(is)g(done:)120
2030 y Fk(stmt:)71 b(LET)23 b('\(')h(var)f('\)')502 2093
y({)h($<context>$)e(=)i(push_context)e(\(\);)550 2155
y(declare_variable)f(\($3\);)i(})311 2217 y(stmt)95 b({)24
b($$)f(=)h($6;)550 2279 y(pop_context)e(\($<context>5\);)g(})0
2421 y Fp(As)e(so)q(on)f(as)h(`)p Fk(let)14 b(\()p Fl(v)m(ariable)s
Fk(\))p Fp(')20 b(has)g(b)q(een)g(recognized,)i(the)e(\014rst)f(action)
h(is)g(run.)34 b(It)20 b(sa)o(v)o(es)f(a)g(cop)o(y)h(of)f(the)0
2483 y(curren)o(t)f(seman)o(tic)g(con)o(text)g(\(the)g(list)g(of)g
(accessible)i(v)m(ariables\))f(as)f(its)g(seman)o(tic)g(v)m(alue,)i
(using)f(alternativ)o(e)0 2545 y Fk(context)14 b Fp(in)i(the)f(data-t)o
(yp)q(e)g(union.)21 b(Then)16 b(it)f(calls)h Fk(declare_variable)d
Fp(to)i(add)g(the)g(new)h(v)m(ariable)g(to)f(that)0 2608
y(list.)23 b(Once)16 b(the)g(\014rst)g(action)g(is)g(\014nished,)i(the)
d(em)o(b)q(edded)j(statemen)o(t)d Fk(stmt)g Fp(can)h(b)q(e)g(parsed.)22
b(Note)16 b(that)f(the)0 2670 y(mid-rule)i(action)e(is)h(comp)q(onen)o
(t)f(n)o(um)o(b)q(er)h(5,)e(so)h(the)g(`)p Fk(stmt)p
Fp(')f(is)i(comp)q(onen)o(t)f(n)o(um)o(b)q(er)h(6.)p
eop
%%Page: 49 51
49 50 bop 0 -58 a Fp(Chapter)15 b(3:)k(Bison)d(Grammar)e(Files)1247
b(49)62 183 y(After)20 b(the)h(em)o(b)q(edded)h(statemen)o(t)d(is)i
(parsed,)g(its)g(seman)o(tic)f(v)m(alue)i(b)q(ecomes)f(the)f(v)m(alue)i
(of)e(the)h(en)o(tire)0 246 y Fk(let)p Fp(-statemen)o(t.)g(Then)16
b(the)g(seman)o(tic)g(v)m(alue)i(from)d(the)h(earlier)h(action)f(is)g
(used)h(to)e(restore)g(the)h(prior)h(list)f(of)0 308
y(v)m(ariables.)25 b(This)18 b(remo)o(v)o(es)d(the)i(temp)q(orary)f
Fk(let)p Fp(-v)m(ariable)i(from)d(the)i(list)h(so)e(that)g(it)g(w)o
(on't)g(app)q(ear)h(to)f(exist)0 370 y(while)h(the)e(rest)g(of)g(the)g
(program)f(is)i(parsed.)62 521 y(T)l(aking)d(action)f(b)q(efore)g(a)g
(rule)h(is)f(completely)i(recognized)f(often)f(leads)g(to)g
(con\015icts)h(since)g(the)f(parser)g(m)o(ust)0 583 y(commit)18
b(to)f(a)g(parse)h(in)g(order)g(to)f(execute)h(the)g(action.)28
b(F)l(or)17 b(example,)i(the)e(follo)o(wing)i(t)o(w)o(o)d(rules,)j
(without)0 645 y(mid-rule)d(actions,)d(can)h(co)q(exist)h(in)f(a)g(w)o
(orking)f(parser)h(b)q(ecause)g(the)g(parser)g(can)g(shift)g(the)g(op)q
(en-brace)g(tok)o(en)0 708 y(and)h(lo)q(ok)h(at)e(what)h(follo)o(ws)g
(b)q(efore)h(deciding)h(whether)e(there)h(is)f(a)g(declaration)h(or)f
(not:)120 854 y Fk(compound:)23 b('{')g(declarations)f(statements)h
('}')311 916 y(|)h('{')f(statements)g('}')311 979 y(;)0
1122 y Fp(But)15 b(when)h(w)o(e)f(add)g(a)g(mid-rule)i(action)e(as)g
(follo)o(ws,)g(the)g(rules)h(b)q(ecome)g(nonfunctional:)120
1269 y Fk(compound:)23 b({)g(prepare_for_local_variables)e(\(\);)i(})
359 1331 y('{')g(declarations)f(statements)h('}')311
1398 y(|)h('{')f(statements)g('}')311 1461 y(;)0 1604
y Fp(No)o(w)15 b(the)g(parser)g(is)h(forced)f(to)g(decide)i(whether)e
(to)g(run)g(the)g(mid-rule)i(action)f(when)g(it)f(has)g(read)g(no)h
(farther)0 1666 y(than)21 b(the)g(op)q(en-brace.)38 b(In)22
b(other)f(w)o(ords,)g(it)g(m)o(ust)g(commit)g(to)f(using)i(one)f(rule)h
(or)e(the)h(other,)h(without)0 1729 y(su\016cien)o(t)d(information)g
(to)f(do)g(it)h(correctly)l(.)30 b(\(The)19 b(op)q(en-brace)g(tok)o(en)
g(is)g(what)f(is)h(called)h(the)e Fl(lo)q(ok-ahead)0
1791 y Fp(tok)o(en)11 b(at)f(this)i(time,)g(since)h(the)e(parser)g(is)h
(still)g(deciding)i(what)c(to)h(do)g(ab)q(out)g(it.)19
b(See)12 b(Section)g(5.1)f([Lo)q(ok-Ahead)0 1853 y(T)l(ok)o(ens],)j
(page)h(66.\))62 2004 y(Y)l(ou)j(migh)o(t)f(think)g(that)g(y)o(ou)g
(could)h(correct)e(the)i(problem)f(b)o(y)g(putting)h(iden)o(tical)h
(actions)e(in)o(to)g(the)g(t)o(w)o(o)0 2066 y(rules,)f(lik)o(e)g(this:)
120 2213 y Fk(compound:)23 b({)g(prepare_for_local_variables)e(\(\);)i
(})359 2275 y('{')g(declarations)f(statements)h('}')311
2337 y(|)h({)f(prepare_for_local_variables)e(\(\);)i(})359
2400 y('{')g(statements)g('}')311 2462 y(;)0 2608 y Fp(But)17
b(this)h(do)q(es)f(not)g(help,)i(b)q(ecause)f(Bison)g(do)q(es)f(not)g
(realize)h(that)f(the)g(t)o(w)o(o)f(actions)h(are)g(iden)o(tical.)28
b(\(Bison)0 2670 y(nev)o(er)15 b(tries)h(to)e(understand)i(the)f(C)g
(co)q(de)h(in)g(an)f(action.\))p eop
%%Page: 50 52
50 51 bop 0 -58 a Fp(50)1697 b(Bison)16 b(1.20)62 183
y(If)c(the)f(grammar)e(is)j(suc)o(h)f(that)f(a)h(declaration)h(can)f(b)
q(e)g(distinguished)j(from)c(a)h(statemen)o(t)f(b)o(y)h(the)g(\014rst)f
(tok)o(en)0 246 y(\(whic)o(h)16 b(is)h(true)f(in)g(C\),)f(then)i(one)f
(solution)g(whic)o(h)h(do)q(es)f(w)o(ork)f(is)i(to)e(put)h(the)g
(action)g(after)f(the)h(op)q(en-brace,)0 308 y(lik)o(e)g(this:)120
437 y Fk(compound:)23 b('{')g({)h(prepare_for_local_variabl)o(es)d
(\(\);)i(})359 499 y(declarations)f(statements)g('}')311
562 y(|)i('{')f(statements)g('}')311 624 y(;)0 759 y
Fp(No)o(w)16 b(the)h(\014rst)g(tok)o(en)f(of)h(the)g(follo)o(wing)g
(declaration)h(or)e(statemen)o(t,)g(whic)o(h)i(w)o(ould)f(in)h(an)o(y)e
(case)h(tell)h(Bison)0 821 y(whic)o(h)e(rule)g(to)f(use,)g(can)g(still)
i(do)e(so.)62 963 y(Another)e(solution)g(is)g(to)f(bury)h(the)f(action)
h(inside)h(a)e(non)o(terminal)i(sym)o(b)q(ol)e(whic)o(h)i(serv)o(es)e
(as)g(a)g(subroutine:)120 1101 y Fk(subroutine:)22 b(/*)i(empty)f(*/)
359 1163 y({)g(prepare_for_local_variables)e(\(\);)i(})311
1225 y(;)120 1360 y(compound:)g(subroutine)359 1423 y('{')g
(declarations)f(statements)h('}')311 1485 y(|)h(subroutine)359
1547 y('{')f(statements)g('}')311 1610 y(;)0 1744 y Fp(No)o(w)e(Bison)g
(can)h(execute)g(the)f(action)g(in)h(the)g(rule)g(for)e
Fk(subroutine)g Fp(without)h(deciding)i(whic)o(h)g(rule)f(for)0
1806 y Fk(compound)15 b Fp(it)i(will)h(ev)o(en)o(tually)g(use.)24
b(Note)16 b(that)g(the)g(action)h(is)g(no)o(w)f(at)g(the)g(end)h(of)f
(its)h(rule.)25 b(An)o(y)16 b(mid-rule)0 1869 y(action)g(can)g(b)q(e)h
(con)o(v)o(erted)f(to)f(an)h(end-of-rule)h(action)f(in)h(this)g(w)o(a)o
(y)l(,)e(and)h(this)g(is)h(what)e(Bison)i(actually)g(do)q(es)0
1931 y(to)e(implemen)o(t)h(mid-rule)h(actions.)0 2199
y Fo(3.6)33 b(Bison)15 b(Declarations)62 2341 y Fp(The)g
Fl(Bison)g(declarations)h Fp(section)f(of)f(a)g(Bison)g(grammar)f
(de\014nes)i(the)g(sym)o(b)q(ols)f(used)h(in)g(form)o(ulating)f(the)0
2404 y(grammar)g(and)h(the)g(data)g(t)o(yp)q(es)g(of)g(seman)o(tic)g(v)
m(alues.)21 b(See)16 b(Section)g(3.2)e([Sym)o(b)q(ols],)h(page)g(40.)62
2545 y(All)21 b(tok)o(en)f(t)o(yp)q(e)g(names)g(\(but)g(not)f(single-c)
o(haracter)i(literal)g(tok)o(ens)e(suc)o(h)i(as)e Fk('+')h
Fp(and)g Fk('*')p Fp(\))f(m)o(ust)g(b)q(e)0 2608 y(declared.)i(Non)o
(terminal)16 b(sym)o(b)q(ols)f(m)o(ust)g(b)q(e)g(declared)i(if)e(y)o
(ou)g(need)h(to)f(sp)q(ecify)h(whic)o(h)g(data)e(t)o(yp)q(e)i(to)e(use)
i(for)0 2670 y(the)f(seman)o(tic)h(v)m(alue)g(\(see)f(Section)h(3.5.2)e
([More)g(Than)h(One)h(V)l(alue)h(T)o(yp)q(e],)d(page)h(45\).)p
eop
%%Page: 51 53
51 52 bop 0 -58 a Fp(Chapter)15 b(3:)k(Bison)d(Grammar)e(Files)1247
b(51)62 183 y(The)12 b(\014rst)f(rule)h(in)g(the)f(\014le)i(also)e(sp)q
(eci\014es)i(the)e(start)g(sym)o(b)q(ol,)h(b)o(y)f(default.)19
b(If)12 b(y)o(ou)e(w)o(an)o(t)h(some)g(other)g(sym)o(b)q(ol)0
246 y(to)i(b)q(e)h(the)g(start)e(sym)o(b)q(ol,)i(y)o(ou)f(m)o(ust)g
(declare)i(it)f(explicitly)i(\(see)e(Section)g(1.1)f([Languages)g(and)h
(Con)o(text-F)l(ree)0 308 y(Grammars],)f(page)i(13\).)0
605 y Fj(3.6.1)30 b(T)-5 b(ok)n(en)15 b(T)n(yp)r(e)g(Names)62
752 y Fp(The)h(basic)g(w)o(a)o(y)e(to)g(declare)i(a)f(tok)o(en)g(t)o
(yp)q(e)g(name)h(\(terminal)f(sym)o(b)q(ol\))g(is)h(as)f(follo)o(ws:)
120 887 y Fk(\045token)23 b Fl(name)62 1034 y Fp(Bison)17
b(will)h(con)o(v)o(ert)d(this)i(in)o(to)f(a)f Fk(#define)g
Fp(directiv)o(e)j(in)f(the)f(parser,)f(so)h(that)f(the)h(function)h
Fk(yylex)f Fp(\(if)g(it)0 1096 y(is)g(in)g(this)f(\014le\))h(can)g(use)
f(the)g(name)h Fl(name)h Fp(to)e(stand)g(for)g(this)g(tok)o(en)g(t)o
(yp)q(e's)g(co)q(de.)62 1243 y(Alternativ)o(ely)l(,)f(y)o(ou)d(can)h
(use)g Fk(\045left)p Fp(,)f Fk(\045right)p Fp(,)g(or)h
Fk(\045nonassoc)e Fp(instead)i(of)g Fk(\045token)p Fp(,)f(if)h(y)o(ou)f
(wish)i(to)e(sp)q(ecify)0 1305 y(precedence.)22 b(See)15
b(Section)i(3.6.2)c([Op)q(erator)i(Precedence],)h(page)f(52.)62
1452 y(Y)l(ou)i(can)g(explicitly)i(sp)q(ecify)f(the)e(n)o(umeric)i(co)q
(de)f(for)f(a)g(tok)o(en)g(t)o(yp)q(e)h(b)o(y)f(app)q(ending)i(an)f(in)
o(teger)f(v)m(alue)i(in)0 1514 y(the)d(\014eld)i(immediately)g(follo)o
(wing)f(the)f(tok)o(en)g(name:)120 1649 y Fk(\045token)23
b(NUM)g(300)0 1796 y Fp(It)16 b(is)g(generally)h(b)q(est,)e(ho)o(w)o
(ev)o(er,)g(to)g(let)h(Bison)g(c)o(ho)q(ose)g(the)f(n)o(umeric)i(co)q
(des)f(for)f(all)i(tok)o(en)e(t)o(yp)q(es.)21 b(Bison)16
b(will)0 1858 y(automatically)g(select)g(co)q(des)f(that)g(don't)g
(con\015ict)h(with)f(eac)o(h)g(other)g(or)g(with)g(ASCI)q(I)i(c)o
(haracters.)62 2005 y(In)23 b(the)e(ev)o(en)o(t)h(that)f(the)g(stac)o
(k)g(t)o(yp)q(e)h(is)g(a)f(union,)j(y)o(ou)d(m)o(ust)h(augmen)o(t)f
(the)g Fk(\045token)g Fp(or)g(other)g(tok)o(en)0 2067
y(declaration)i(to)f(include)j(the)e(data)f(t)o(yp)q(e)g(alternativ)o
(e)h(delimited)i(b)o(y)d(angle-brac)o(k)o(ets)h(\(see)f(Section)i
(3.5.2)0 2130 y([More)14 b(Than)h(One)h(V)l(alue)h(T)o(yp)q(e],)d(page)
h(45\).)62 2277 y(F)l(or)g(example:)120 2419 y Fk(\045union)23
b({)334 b(/*)24 b(define)f(stack)g(type)g(*/)168 2482
y(double)g(val;)168 2544 y(symrec)g(*tptr;)120 2606 y(})120
2668 y(\045token)g(<val>)g(NUM)143 b(/*)24 b(define)f(token)g(NUM)g
(and)h(its)f(type)g(*/)p eop
%%Page: 52 54
52 53 bop 0 -58 a Fp(52)1697 b(Bison)16 b(1.20)0 183
y Fj(3.6.2)30 b(Op)r(erator)14 b(Precedence)62 333 y
Fp(Use)i(the)g Fk(\045left)p Fp(,)f Fk(\045right)g Fp(or)g
Fk(\045nonassoc)f Fp(declaration)j(to)e(declare)i(a)e(tok)o(en)g(and)h
(sp)q(ecify)h(its)f(precedence)0 396 y(and)g(asso)q(ciativit)o(y)l(,)g
(all)h(at)e(once.)21 b(These)c(are)e(called)i Fl(precedence)h
(declarations)p Fp(.)k(See)16 b(Section)h(5.3)e([Op)q(erator)0
458 y(Precedence],)h(page)f(68,)f(for)h(general)g(information)h(on)f
(op)q(erator)f(precedence.)62 608 y(The)i(syn)o(tax)e(of)h(a)g
(precedence)i(declaration)f(is)f(the)h(same)f(as)f(that)h(of)g
Fk(\045token)p Fp(:)k(either)120 746 y Fk(\045left)k
Fl(sym)o(b)q(ols)r Fh(:)8 b(:)g(:)0 896 y Fp(or)120 1033
y Fk(\045left)23 b(<)p Fl(t)o(yp)q(e)s Fk(>)g Fl(sym)o(b)q(ols)r
Fh(:)8 b(:)g(:)62 1184 y Fp(And)21 b(indeed)i(an)o(y)d(of)g(these)h
(declarations)g(serv)o(es)g(the)f(purp)q(oses)i(of)e
Fk(\045token)p Fp(.)35 b(But)21 b(in)g(addition,)i(they)0
1246 y(sp)q(ecify)17 b(the)e(asso)q(ciativit)o(y)g(and)h(relativ)o(e)g
(precedence)g(for)f(all)h(the)f Fl(sym)o(b)q(ols)r Fp(:)37
1396 y Fn(\017)30 b Fp(The)12 b(asso)q(ciativit)o(y)g(of)f(an)g(op)q
(erator)g Fl(op)h Fp(determines)h(ho)o(w)e(rep)q(eated)h(uses)g(of)f
(the)g(op)q(erator)g(nest:)18 b(whether)90 1458 y(`)p
Fl(x)g(op)e(y)j(op)e(z)s Fp(')12 b(is)h(parsed)g(b)o(y)f(grouping)h
Fl(x)j Fp(with)d Fl(y)j Fp(\014rst)c(or)h(b)o(y)f(grouping)h
Fl(y)j Fp(with)d Fl(z)j Fp(\014rst.)i Fk(\045left)12
b Fp(sp)q(eci\014es)90 1520 y(left-asso)q(ciativit)o(y)j(\(grouping)f
Fl(x)j Fp(with)e Fl(y)j Fp(\014rst\))13 b(and)h Fk(\045right)g
Fp(sp)q(eci\014es)h(righ)o(t-asso)q(ciativit)o(y)g(\(grouping)f
Fl(y)90 1583 y Fp(with)d Fl(z)j Fp(\014rst\).)k Fk(\045nonassoc)9
b Fp(sp)q(eci\014es)k(no)e(asso)q(ciativit)o(y)l(,)h(whic)o(h)g(means)f
(that)f(`)p Fl(x)18 b(op)e(y)j(op)e(z)s Fp(')10 b(is)i(considered)90
1645 y(a)j(syn)o(tax)f(error.)37 1733 y Fn(\017)30 b
Fp(The)18 b(precedence)h(of)d(an)i(op)q(erator)e(determines)i(ho)o(w)f
(it)h(nests)f(with)g(other)g(op)q(erators.)26 b(All)18
b(the)f(tok)o(ens)90 1795 y(declared)f(in)f(a)f(single)i(precedence)g
(declaration)f(ha)o(v)o(e)f(equal)h(precedence)h(and)f(nest)f(together)
f(according)90 1857 y(to)f(their)i(asso)q(ciativit)o(y)l(.)20
b(When)13 b(t)o(w)o(o)f(tok)o(ens)g(declared)j(in)f(di\013eren)o(t)f
(precedence)i(declarations)e(asso)q(ciate,)90 1920 y(the)i(one)h
(declared)g(later)f(has)g(the)h(higher)g(precedence)h(and)e(is)h(group)
q(ed)f(\014rst.)0 2245 y Fj(3.6.3)30 b(The)15 b(Collection)g(of)g(V)-5
b(alue)15 b(T)n(yp)r(es)62 2395 y Fp(The)f Fk(\045union)f
Fp(declaration)h(sp)q(eci\014es)i(the)e(en)o(tire)g(collection)h(of)e
(p)q(ossible)j(data)d(t)o(yp)q(es)g(for)g(seman)o(tic)h(v)m(alues.)0
2458 y(The)j(k)o(eyw)o(ord)f Fk(\045union)g Fp(is)i(follo)o(w)o(ed)f(b)
o(y)g(a)g(pair)g(of)g(braces)g(con)o(taining)g(the)g(same)g(thing)g
(that)g(go)q(es)f(inside)j(a)0 2520 y Fk(union)14 b Fp(in)i(C.)62
2670 y(F)l(or)f(example:)p eop
%%Page: 53 55
53 54 bop 0 -58 a Fp(Chapter)15 b(3:)k(Bison)d(Grammar)e(Files)1247
b(53)120 183 y Fk(\045union)23 b({)168 246 y(double)g(val;)168
308 y(symrec)g(*tptr;)120 370 y(})0 505 y Fp(This)15
b(sa)o(ys)f(that)g(the)h(t)o(w)o(o)e(alternativ)o(e)i(t)o(yp)q(es)f
(are)h Fk(double)e Fp(and)i Fk(symrec)f(*)p Fp(.)20 b(They)15
b(are)f(giv)o(en)h(names)g Fk(val)f Fp(and)0 567 y Fk(tptr)p
Fp(;)k(these)g(names)g(are)g(used)g(in)h(the)f Fk(\045token)e
Fp(and)j Fk(\045type)e Fp(declarations)h(to)f(pic)o(k)i(one)f(of)f(the)
h(t)o(yp)q(es)g(for)f(a)0 629 y(terminal)f(or)f(non)o(terminal)h(sym)o
(b)q(ol)f(\(see)g(Section)h(3.6.4)e([Non)o(terminal)h(Sym)o(b)q(ols],)g
(page)g(53\).)62 772 y(Note)d(that,)f(unlik)o(e)i(making)f(a)f
Fk(union)g Fp(declaration)i(in)f(C,)f(y)o(ou)h(do)f(not)g(write)h(a)f
(semicolon)i(after)e(the)h(closing)0 834 y(brace.)0 1089
y Fj(3.6.4)30 b(Non)n(terminal)15 b(Sym)n(b)r(ols)0 1231
y Fp(When)20 b(y)o(ou)f(use)h Fk(\045union)f Fp(to)g(sp)q(ecify)i(m)o
(ultiple)g(v)m(alue)g(t)o(yp)q(es,)f(y)o(ou)f(m)o(ust)g(declare)i(the)e
(v)m(alue)i(t)o(yp)q(e)f(of)f(eac)o(h)0 1293 y(non)o(terminal)d(sym)o
(b)q(ol)f(for)g(whic)o(h)h(v)m(alues)g(are)f(used.)21
b(This)16 b(is)f(done)h(with)f(a)g Fk(\045type)g Fp(declaration,)g(lik)
o(e)i(this:)120 1423 y Fk(\045type)23 b(<)p Fl(t)o(yp)q(e)s
Fk(>)g Fl(non)o(terminal)r Fh(:)8 b(:)g(:)0 1565 y Fp(Here)15
b Fl(non)o(terminal)j Fp(is)e(the)f(name)g(of)g(a)f(non)o(terminal)i
(sym)o(b)q(ol,)f(and)g Fl(t)o(yp)q(e)j Fp(is)e(the)f(name)g(giv)o(en)h
(in)g(the)f Fk(\045union)0 1627 y Fp(to)f(the)h(alternativ)o(e)g(that)f
(y)o(ou)h(w)o(an)o(t)f(\(see)g(Section)i(3.6.3)d([The)i(Collection)h
(of)f(V)l(alue)h(T)o(yp)q(es],)e(page)h(52\).)k(Y)l(ou)0
1690 y(can)c(giv)o(e)f(an)o(y)h(n)o(um)o(b)q(er)g(of)f(non)o(terminal)h
(sym)o(b)q(ols)g(in)g(the)g(same)f Fk(\045type)g Fp(declaration,)h(if)g
(they)f(ha)o(v)o(e)h(the)f(same)0 1752 y(v)m(alue)i(t)o(yp)q(e.)k(Use)c
(spaces)f(to)g(separate)f(the)i(sym)o(b)q(ol)f(names.)0
2007 y Fj(3.6.5)30 b(Suppressing)16 b(Con\015ict)f(W)-5
b(arnings)62 2149 y Fp(Bison)18 b(normally)f(w)o(arns)f(if)h(there)f
(are)h(an)o(y)f(con\015icts)h(in)h(the)f(grammar)e(\(see)h(Section)i
(5.2)d([Shift/Reduce)0 2211 y(Con\015icts],)d(page)f(67\),)g(but)h
(most)f(real)g(grammars)f(ha)o(v)o(e)h(harmless)h(shift/reduce)h
(con\015icts)f(whic)o(h)g(are)g(resolv)o(ed)0 2273 y(in)19
b(a)f(predictable)i(w)o(a)o(y)d(and)h(w)o(ould)h(b)q(e)g(di\016cult)g
(to)f(eliminate.)30 b(It)18 b(is)h(desirable)h(to)d(suppress)i(the)f(w)
o(arning)0 2336 y(ab)q(out)g(these)h(con\015icts)g(unless)h(the)f(n)o
(um)o(b)q(er)g(of)f(con\015icts)h(c)o(hanges.)30 b(Y)l(ou)18
b(can)h(do)g(this)g(with)f(the)h Fk(\045expect)0 2398
y Fp(declaration.)62 2540 y(The)d(declaration)g(lo)q(oks)f(lik)o(e)h
(this:)120 2670 y Fk(\045expect)23 b Fl(n)p eop
%%Page: 54 56
54 55 bop 0 -58 a Fp(54)1697 b(Bison)16 b(1.20)62 183
y(Here)k Fl(n)f Fp(is)h(a)f(decimal)i(in)o(teger.)33
b(The)19 b(declaration)h(sa)o(ys)f(there)g(should)i(b)q(e)f(no)f(w)o
(arning)g(if)h(there)g(are)f Fl(n)0 246 y Fp(shift/reduce)c
(con\015icts)f(and)g(no)g(reduce/reduce)h(con\015icts.)20
b(The)14 b(usual)g(w)o(arning)g(is)g(giv)o(en)g(if)g(there)g(are)f
(either)0 308 y(more)i(or)f(few)o(er)h(con\015icts,)h(or)f(if)g(there)h
(are)e(an)o(y)h(reduce/reduce)i(con\015icts.)62 445 y(In)f(general,)f
(using)h Fk(\045expect)f Fp(in)o(v)o(olv)o(es)g(these)h(steps:)37
583 y Fn(\017)30 b Fp(Compile)19 b(y)o(our)e(grammar)f(without)i
Fk(\045expect)p Fp(.)26 b(Use)18 b(the)f(`)p Fk(-v)p
Fp(')g(option)h(to)f(get)g(a)g(v)o(erb)q(ose)h(list)g(of)g(where)90
645 y(the)d(con\015icts)h(o)q(ccur.)21 b(Bison)15 b(will)i(also)e(prin)
o(t)h(the)f(n)o(um)o(b)q(er)h(of)f(con\015icts.)37 720
y Fn(\017)30 b Fp(Chec)o(k)20 b(eac)o(h)g(of)g(the)g(con\015icts)g(to)g
(mak)o(e)f(sure)h(that)f(Bison's)h(default)h(resolution)g(is)f(what)f
(y)o(ou)h(really)90 783 y(w)o(an)o(t.)f(If)c(not,)g(rewrite)g(the)g
(grammar)f(and)h(go)g(bac)o(k)g(to)g(the)g(b)q(eginning.)37
858 y Fn(\017)30 b Fp(Add)16 b(an)f Fk(\045expect)f Fp(declaration,)i
(cop)o(ying)f(the)h(n)o(um)o(b)q(er)f Fl(n)h Fp(from)e(the)h(n)o(um)o
(b)q(er)h(whic)o(h)g(Bison)g(prin)o(ted.)62 1009 y(No)o(w)h(Bison)i
(will)g(stop)e(anno)o(ying)h(y)o(ou)f(ab)q(out)h(the)g(con\015icts)g(y)
o(ou)g(ha)o(v)o(e)f(c)o(hec)o(k)o(ed,)h(but)g(it)g(will)h(w)o(arn)e(y)o
(ou)0 1071 y(again)e(if)h(c)o(hanges)f(in)h(the)f(grammar)f(result)i
(in)g(additional)g(con\015icts.)0 1284 y Fj(3.6.6)30
b(The)15 b(Start-Sym)n(b)r(ol)62 1421 y Fp(Bison)e(assumes)e(b)o(y)h
(default)g(that)f(the)h(start)e(sym)o(b)q(ol)i(for)f(the)h(grammar)e
(is)i(the)g(\014rst)f(non)o(terminal)i(sp)q(eci\014ed)0
1484 y(in)e(the)g(grammar)e(sp)q(eci\014cation)j(section.)19
b(The)10 b(programmer)g(ma)o(y)f(o)o(v)o(erride)i(this)g(restriction)g
(with)f(the)h Fk(\045start)0 1546 y Fp(declaration)16
b(as)f(follo)o(ws:)120 1671 y Fk(\045start)23 b Fl(sym)o(b)q(ol)0
1884 y Fj(3.6.7)30 b(A)15 b(Pure)h(\(Reen)n(tran)n(t\))f(P)n(arser)62
2021 y Fp(A)20 b Fl(reen)o(tran)o(t)f Fp(program)g(is)h(one)g(whic)o(h)
g(do)q(es)g(not)f(alter)g(in)i(the)e(course)h(of)f(execution;)k(in)d
(other)f(w)o(ords,)0 2084 y(it)j(consists)h(en)o(tirely)g(of)e
Fl(pure)26 b Fp(\(read-only\))c(co)q(de.)41 b(Reen)o(trancy)22
b(is)h(imp)q(ortan)o(t)f(whenev)o(er)g(async)o(hronous)0
2146 y(execution)d(is)e(p)q(ossible;)j(for)d(example,)i(a)e(nonreen)o
(tran)o(t)g(program)f(ma)o(y)h(not)g(b)q(e)h(safe)f(to)g(call)h(from)f
(a)g(signal)0 2208 y(handler.)22 b(In)16 b(systems)e(with)i(m)o
(ultiple)h(threads)f(of)f(con)o(trol,)f(a)i(nonreen)o(tran)o(t)e
(program)g(m)o(ust)h(b)q(e)h(called)h(only)0 2270 y(within)f(in)o
(terlo)q(c)o(ks.)62 2408 y(The)23 b(Bison)h(parser)e(is)h(not)g
(normally)g(a)g(reen)o(tran)o(t)e(program,)j(b)q(ecause)f(it)g(uses)g
(statically)h(allo)q(cated)0 2470 y(v)m(ariables)17 b(for)d(comm)o
(unication)i(with)g Fk(yylex)p Fp(.)j(These)c(v)m(ariables)i(include)g
Fk(yylval)e Fp(and)g Fk(yylloc)p Fp(.)62 2608 y(The)j(Bison)h
(declaration)f Fk(\045pure_parser)f Fp(sa)o(ys)g(that)g(y)o(ou)g(w)o
(an)o(t)g(the)h(parser)f(to)h(b)q(e)g(reen)o(tran)o(t.)27
b(It)18 b(lo)q(oks)0 2670 y(lik)o(e)e(this:)p eop
%%Page: 55 57
55 56 bop 0 -58 a Fp(Chapter)15 b(3:)k(Bison)d(Grammar)e(Files)1247
b(55)120 183 y Fk(\045pure_parser)62 328 y Fp(The)22
b(e\013ect)f(is)h(that)e(the)i(t)o(w)o(o)e(comm)o(unication)i(v)m
(ariables)g(b)q(ecome)g(lo)q(cal)h(v)m(ariables)f(in)g
Fk(yyparse)p Fp(,)g(and)0 390 y(a)e(di\013eren)o(t)g(calling)i(con)o(v)
o(en)o(tion)e(is)h(used)g(for)e(the)i(lexical)h(analyzer)f(function)g
Fk(yylex)p Fp(.)34 b(See)20 b(Section)i(4.2.4)0 452 y([Calling)15
b(for)e(Pure)h(P)o(arsers],)e(page)h(60,)g(for)h(the)f(details)i(of)e
(this.)20 b(The)14 b(v)m(ariable)h Fk(yynerrs)e Fp(also)h(b)q(ecomes)g
(lo)q(cal)0 514 y(in)19 b Fk(yyparse)e Fp(\(see)h(Section)h(4.3)e([The)
h(Error)f(Rep)q(orting)i(F)l(unction)g Fk(yyerror)p Fp(],)e(page)h
(60\).)28 b(The)18 b(con)o(v)o(en)o(tion)0 577 y(for)d(calling)i
Fk(yyparse)d Fp(itself)i(is)g(unc)o(hanged.)0 850 y Fj(3.6.8)30
b(Bison)15 b(Declaration)g(Summary)62 995 y Fp(Here)h(is)f(a)g(summary)
g(of)g(all)h(Bison)g(declarations:)0 1159 y Fk(\045union)96
b Fp(Declare)17 b(the)g(collection)i(of)d(data)g(t)o(yp)q(es)h(that)f
(seman)o(tic)h(v)m(alues)h(ma)o(y)f(ha)o(v)o(e)f(\(see)h(Section)h
(3.6.3)240 1221 y([The)d(Collection)i(of)d(V)l(alue)j(T)o(yp)q(es],)d
(page)h(52\).)0 1323 y Fk(\045token)96 b Fp(Declare)14
b(a)e(terminal)i(sym)o(b)q(ol)g(\(tok)o(en)e(t)o(yp)q(e)h(name\))g
(with)h(no)f(precedence)i(or)d(asso)q(ciativit)o(y)i(sp)q(ec-)240
1385 y(i\014ed)i(\(see)g(Section)g(3.6.1)d([T)l(ok)o(en)i(T)o(yp)q(e)g
(Names],)g(page)g(51\).)0 1487 y Fk(\045right)96 b Fp(Declare)13
b(a)f(terminal)g(sym)o(b)q(ol)h(\(tok)o(en)e(t)o(yp)q(e)i(name\))f
(that)f(is)i(righ)o(t-asso)q(ciativ)o(e)f(\(see)g(Section)i(3.6.2)240
1549 y([Op)q(erator)h(Precedence],)g(page)h(52\).)0 1651
y Fk(\045left)120 b Fp(Declare)15 b(a)g(terminal)g(sym)o(b)q(ol)g
(\(tok)o(en)f(t)o(yp)q(e)h(name\))f(that)g(is)i(left-asso)q(ciativ)o(e)
f(\(see)g(Section)h(3.6.2)240 1713 y([Op)q(erator)f(Precedence],)g
(page)h(52\).)0 1815 y Fk(\045nonassoc)240 1878 y Fp(Declare)f(a)g
(terminal)g(sym)o(b)q(ol)g(\(tok)o(en)f(t)o(yp)q(e)h(name\))g(that)f
(is)h(nonasso)q(ciativ)o(e)h(\(using)f(it)g(in)g(a)g(w)o(a)o(y)240
1940 y(that)h(w)o(ould)h(b)q(e)h(asso)q(ciativ)o(e)f(is)g(a)g(syn)o
(tax)f(error\))f(\(see)i(Section)h(3.6.2)d([Op)q(erator)h(Precedence],)
240 2002 y(page)f(52\).)0 2104 y Fk(\045type)120 b Fp(Declare)16
b(the)g(t)o(yp)q(e)f(of)g(seman)o(tic)h(v)m(alues)h(for)e(a)g(non)o
(terminal)h(sym)o(b)q(ol)g(\(see)g(Section)g(3.6.4)e([Non-)240
2166 y(terminal)i(Sym)o(b)q(ols],)f(page)g(53\).)0 2268
y Fk(\045start)96 b Fp(Sp)q(ecify)17 b(the)e(grammar's)e(start)h(sym)o
(b)q(ol)i(\(see)f(Section)h(3.6.6)e([The)h(Start-Sym)o(b)q(ol],)f(page)
h(54\).)0 2370 y Fk(\045expect)72 b Fp(Declare)19 b(the)f(exp)q(ected)i
(n)o(um)o(b)q(er)e(of)g(shift-reduce)i(con\015icts)f(\(see)f(Section)h
(3.6.5)e([Suppressing)240 2432 y(Con\015ict)f(W)l(arnings],)e(page)h
(53\).)0 2534 y Fk(\045pure_parser)240 2596 y Fp(Request)23
b(a)f(pure)h(\(reen)o(tran)o(t\))e(parser)h(program)g(\(see)g(Section)h
(3.6.7)e([A)h(Pure)h(\(Reen)o(tran)o(t\))240 2659 y(P)o(arser],)14
b(page)h(54\).)p eop
%%Page: 56 58
56 57 bop 0 -58 a Fp(56)1697 b(Bison)16 b(1.20)0 183
y Fo(3.7)33 b(Multiple)17 b(P)n(arsers)e(in)h(the)f(Same)g(Program)62
320 y Fp(Most)j(programs)f(that)g(use)i(Bison)g(parse)g(only)f(one)h
(language)g(and)f(therefore)g(con)o(tain)h(only)g(one)f(Bison)0
382 y(parser.)h(But)c(what)f(if)h(y)o(ou)g(w)o(an)o(t)e(to)h(parse)h
(more)f(than)h(one)g(language)g(with)g(the)f(same)h(program?)k(Then)c
(y)o(ou)0 445 y(need)h(to)f(a)o(v)o(oid)g(a)f(name)i(con\015ict)g(b)q
(et)o(w)o(een)f(di\013eren)o(t)h(de\014nitions)h(of)d
Fk(yyparse)p Fp(,)g Fk(yylval)p Fp(,)g(and)i(so)e(on.)62
582 y(The)e(easy)g(w)o(a)o(y)f(to)g(do)h(this)g(is)g(to)f(use)h(the)g
(option)g(`)p Fk(-p)j Fl(pre\014x)s Fp(')d(\(see)f(Chapter)h(9)f([In)o
(v)o(oking)h(Bison],)h(page)e(87\).)0 644 y(This)16 b(renames)f(the)g
(in)o(terface)h(functions)g(and)f(v)m(ariables)i(of)d(the)i(Bison)g
(parser)e(to)h(start)f(with)i Fl(pre\014x)i Fp(instead)0
706 y(of)d(`)p Fk(yy)p Fp('.)k(Y)l(ou)c(can)g(use)h(this)g(to)e(giv)o
(e)i(eac)o(h)f(parser)g(distinct)h(names)f(that)g(do)g(not)g
(con\015ict.)62 843 y(The)f(precise)h(list)f(of)f(sym)o(b)q(ols)h
(renamed)g(is)g Fk(yyparse)p Fp(,)e Fk(yylex)p Fp(,)h
Fk(yyerror)p Fp(,)f Fk(yylval)p Fp(,)h Fk(yychar)g Fp(and)g
Fk(yydebug)p Fp(.)0 906 y(F)l(or)i(example,)g(if)h(y)o(ou)f(use)g(`)p
Fk(-p)g(c)p Fp(',)f(the)h(names)g(b)q(ecome)h Fk(cparse)p
Fp(,)e Fk(clex)p Fp(,)h(and)g(so)g(on.)62 1043 y Ff(All)f(the)f(other)f
(v)m(ariables)j(and)e(macros)g(asso)q(ciated)g(with)g(Bison)g(are)g
(not)f(renamed.)21 b Fp(These)12 b(others)g(are)g(not)0
1105 y(global;)h(there)f(is)h(no)e(con\015ict)i(if)f(the)g(same)g(name)
g(is)g(used)h(in)f(di\013eren)o(t)h(parsers.)18 b(F)l(or)11
b(example,)i Fk(YYSTYPE)e Fp(is)h(not)0 1167 y(renamed,)i(but)g
(de\014ning)h(this)f(in)g(di\013eren)o(t)g(w)o(a)o(ys)f(in)h
(di\013eren)o(t)g(parsers)f(causes)h(no)f(trouble)h(\(see)g(Section)h
(3.5.1)0 1229 y([Data)f(T)o(yp)q(es)h(of)g(Seman)o(tic)g(V)l(alues],)h
(page)f(45\).)62 1366 y(The)k(`)p Fk(-p)p Fp(')e(option)i(w)o(orks)e(b)
o(y)i(adding)g(macro)e(de\014nitions)k(to)c(the)i(b)q(eginning)h(of)e
(the)h(parser)f(source)g(\014le,)0 1429 y(de\014ning)f
Fk(yyparse)c Fp(as)i Fl(pre\014x)s Fk(parse)p Fp(,)g(and)g(so)f(on.)20
b(This)c(e\013ectiv)o(ely)g(substitutes)f(one)g(name)g(for)f(the)i
(other)e(in)0 1491 y(the)h(en)o(tire)h(parser)f(\014le.)p
eop
%%Page: 57 59
57 58 bop 0 -58 a Fp(Chapter)15 b(4:)k(P)o(arser)c(C-Language)g(In)o
(terface)1105 b(57)0 183 y Fm(4)41 b(P)n(arser)15 b(C-Language)h(In)n
(terface)62 362 y Fp(The)22 b(Bison)h(parser)e(is)h(actually)h(a)e(C)h
(function)g(named)g Fk(yyparse)p Fp(.)39 b(Here)22 b(w)o(e)f(describ)q
(e)j(the)e(in)o(terface)0 425 y(con)o(v)o(en)o(tions)15
b(of)g Fk(yyparse)f Fp(and)i(the)f(other)g(functions)h(that)e(it)i
(needs)g(to)e(use.)62 562 y(Keep)20 b(in)f(mind)g(that)f(the)h(parser)f
(uses)g(man)o(y)g(C)g(iden)o(ti\014ers)i(starting)e(with)h(`)p
Fk(yy)p Fp(')e(and)i(`)p Fk(YY)p Fp(')e(for)h(in)o(ternal)0
624 y(purp)q(oses.)h(If)12 b(y)o(ou)g(use)g(suc)o(h)g(an)f(iden)o
(ti\014er)i(\(aside)f(from)f(those)h(in)g(this)g(man)o(ual\))g(in)g(an)
g(action)g(or)f(in)i(additional)0 686 y(C)i(co)q(de)h(in)g(the)f
(grammar)f(\014le,)i(y)o(ou)f(are)f(lik)o(ely)j(to)e(run)g(in)o(to)h
(trouble.)0 903 y Fo(4.1)33 b(The)15 b(P)n(arser)g(F)-6
b(unction)17 b Fg(yyparse)62 1040 y Fp(Y)l(ou)g(call)g(the)g(function)g
Fk(yyparse)e Fp(to)h(cause)h(parsing)g(to)e(o)q(ccur.)24
b(This)17 b(function)g(reads)g(tok)o(ens,)e(executes)0
1102 y(actions,)h(and)g(ultimately)h(returns)f(when)h(it)f(encoun)o
(ters)g(end-of-input)i(or)d(an)h(unreco)o(v)o(erable)h(syn)o(tax)e
(error.)0 1164 y(Y)l(ou)e(can)h(also)f(write)g(an)g(action)h(whic)o(h)g
(directs)g Fk(yyparse)e Fp(to)h(return)g(immediately)i(without)e
(reading)g(further.)62 1301 y(The)j(v)m(alue)g(returned)g(b)o(y)f
Fk(yyparse)f Fp(is)i(0)f(if)g(parsing)h(w)o(as)e(successful)j(\(return)
e(is)g(due)h(to)f(end-of-input\).)62 1438 y(The)h(v)m(alue)g(is)g(1)f
(if)g(parsing)h(failed)g(\(return)f(is)h(due)g(to)e(a)h(syn)o(tax)g
(error\).)62 1575 y(In)h(an)f(action,)g(y)o(ou)g(can)g(cause)h
(immediate)g(return)f(from)g Fk(yyparse)f Fp(b)o(y)h(using)h(these)f
(macros:)0 1723 y Fk(YYACCEPT)48 b Fp(Return)16 b(immediately)h(with)e
(v)m(alue)i(0)d(\(to)h(rep)q(ort)g(success\).)0 1806
y Fk(YYABORT)72 b Fp(Return)16 b(immediately)h(with)e(v)m(alue)i(1)d
(\(to)h(rep)q(ort)g(failure\).)0 2022 y Fo(4.2)33 b(The)15
b(Lexical)h(Analyzer)g(F)-6 b(unction)18 b Fg(yylex)62
2159 y Fp(The)c Fl(lexical)h(analyzer)h Fp(function,)e
Fk(yylex)p Fp(,)f(recognizes)h(tok)o(ens)e(from)g(the)i(input)g(stream)
e(and)h(returns)g(them)0 2222 y(to)g(the)g(parser.)19
b(Bison)14 b(do)q(es)f(not)g(create)g(this)h(function)g(automatically;)
g(y)o(ou)f(m)o(ust)g(write)g(it)h(so)e(that)h Fk(yyparse)0
2284 y Fp(can)i(call)i(it.)j(The)15 b(function)h(is)g(sometimes)f
(referred)g(to)g(as)g(a)g(lexical)i(scanner.)62 2421
y(In)i(simple)g(programs,)e Fk(yylex)h Fp(is)g(often)g(de\014ned)h(at)e
(the)h(end)h(of)f(the)g(Bison)g(grammar)f(\014le.)29
b(If)18 b Fk(yylex)f Fp(is)0 2483 y(de\014ned)j(in)f(a)f(separate)g
(source)h(\014le,)h(y)o(ou)e(need)h(to)f(arrange)g(for)g(the)g(tok)o
(en-t)o(yp)q(e)g(macro)g(de\014nitions)i(to)e(b)q(e)0
2545 y(a)o(v)m(ailable)c(there.)19 b(T)l(o)12 b(do)g(this,)h(use)f(the)
g(`)p Fk(-d)p Fp(')f(option)i(when)f(y)o(ou)g(run)h(Bison,)g(so)e(that)
h(it)g(will)i(write)e(these)h(macro)0 2608 y(de\014nitions)j(in)o(to)f
(a)f(separate)g(header)h(\014le)g(`)p Fl(name)p Fk(.tab.h)p
Fp(')e(whic)o(h)j(y)o(ou)e(can)g(include)j(in)f(the)e(other)g(source)h
(\014les)0 2670 y(that)f(need)j(it.)j(See)15 b(Chapter)g(9)g([In)o(v)o
(oking)g(Bison],)h(page)f(87.)p eop
%%Page: 58 60
58 59 bop 0 -58 a Fp(58)1697 b(Bison)16 b(1.20)0 183
y Fj(4.2.1)30 b(Calling)15 b(Con)n(v)n(en)n(tion)h(for)f
Fi(yylex)62 334 y Fp(The)g(v)m(alue)h(that)e Fk(yylex)g
Fp(returns)g(m)o(ust)g(b)q(e)h(the)g(n)o(umeric)h(co)q(de)f(for)f(the)g
(t)o(yp)q(e)h(of)f(tok)o(en)g(it)h(has)g(just)f(found,)0
397 y(or)h(0)g(for)f(end-of-input.)62 548 y(When)e(a)f(tok)o(en)g(is)h
(referred)f(to)g(in)h(the)f(grammar)f(rules)i(b)o(y)g(a)f(name,)g(that)
g(name)g(in)i(the)e(parser)g(\014le)h(b)q(ecomes)0 610
y(a)j(C)h(macro)f(whose)g(de\014nition)j(is)e(the)g(prop)q(er)g(n)o
(umeric)g(co)q(de)h(for)e(that)g(tok)o(en)g(t)o(yp)q(e.)21
b(So)16 b Fk(yylex)f Fp(can)h(use)g(the)0 672 y(name)f(to)g(indicate)h
(that)f(t)o(yp)q(e.)20 b(See)c(Section)g(3.2)e([Sym)o(b)q(ols],)h(page)
g(40.)62 823 y(When)j(a)f(tok)o(en)g(is)g(referred)h(to)e(in)i(the)f
(grammar)f(rules)i(b)o(y)f(a)g(c)o(haracter)g(literal,)h(the)g(n)o
(umeric)g(co)q(de)g(for)0 885 y(that)13 b(c)o(haracter)g(is)h(also)g
(the)g(co)q(de)g(for)g(the)f(tok)o(en)h(t)o(yp)q(e.)19
b(So)14 b Fk(yylex)f Fp(can)h(simply)h(return)f(that)f(c)o(haracter)g
(co)q(de.)0 948 y(The)18 b(n)o(ull)h(c)o(haracter)d(m)o(ust)h(not)g(b)q
(e)h(used)g(this)g(w)o(a)o(y)l(,)f(b)q(ecause)h(its)g(co)q(de)g(is)g
(zero)f(and)h(that)f(is)h(what)e(signi\014es)0 1010 y(end-of-input.)62
1161 y(Here)g(is)f(an)h(example)g(sho)o(wing)f(these)g(things:)120
1299 y Fk(yylex)23 b(\(\))120 1349 y({)168 1399 y Fh(:)8
b(:)g(:)168 1449 y Fk(if)23 b(\(c)h(==)f(EOF\))119 b(/*)24
b(Detect)f(end)g(of)h(file.)f(*/)215 1499 y(return)g(0;)168
1549 y Fh(:)8 b(:)g(:)168 1598 y Fk(if)23 b(\(c)h(==)f('+')h(||)g(c)f
(==)h('-'\))215 1648 y(return)f(c;)143 b(/*)24 b(Assume)f(token)g(type)
h(for)f(`+')g(is)h('+'.)f(*/)168 1698 y Fh(:)8 b(:)g(:)168
1748 y Fk(return)23 b(INT;)142 b(/*)24 b(Return)f(the)g(type)h(of)f
(the)h(token.)f(*/)168 1798 y Fh(:)8 b(:)g(:)120 1847
y Fk(})0 1998 y Fp(This)13 b(in)o(terface)f(has)g(b)q(een)h(designed)g
(so)f(that)f(the)h(output)g(from)f(the)h Fk(lex)g Fp(utilit)o(y)h(can)f
(b)q(e)g(used)h(without)f(c)o(hange)0 2061 y(as)j(the)g(de\014nition)i
(of)e Fk(yylex)p Fp(.)0 2394 y Fj(4.2.2)30 b(Seman)n(tic)16
b(V)-5 b(alues)15 b(of)g(T)-5 b(ok)n(ens)62 2545 y Fp(In)18
b(an)e(ordinary)h(\(nonreen)o(tran)o(t\))f(parser,)g(the)h(seman)o(tic)
g(v)m(alue)h(of)f(the)g(tok)o(en)f(m)o(ust)g(b)q(e)i(stored)e(in)o(to)h
(the)0 2608 y(global)i(v)m(ariable)g Fk(yylval)p Fp(.)27
b(When)18 b(y)o(ou)g(are)g(using)g(just)g(one)g(data)f(t)o(yp)q(e)h
(for)g(seman)o(tic)g(v)m(alues,)h Fk(yylval)e Fp(has)0
2670 y(that)d(t)o(yp)q(e.)20 b(Th)o(us,)15 b(if)h(the)f(t)o(yp)q(e)g
(is)h Fk(int)f Fp(\(the)g(default\),)g(y)o(ou)g(migh)o(t)g(write)g
(this)h(in)g Fk(yylex)p Fp(:)p eop
%%Page: 59 61
59 60 bop 0 -58 a Fp(Chapter)15 b(4:)k(P)o(arser)c(C-Language)g(In)o
(terface)1105 b(59)168 227 y Fh(:)8 b(:)g(:)168 290 y
Fk(yylval)23 b(=)g(value;)47 b(/*)24 b(Put)f(value)h(onto)f(Bison)g
(stack.)g(*/)168 352 y(return)g(INT;)142 b(/*)24 b(Return)f(the)g(type)
h(of)f(the)h(token.)f(*/)168 414 y Fh(:)8 b(:)g(:)62
559 y Fp(When)23 b(y)o(ou)f(are)g(using)h(m)o(ultiple)h(data)e(t)o(yp)q
(es,)i Fk(yylval)p Fp('s)d(t)o(yp)q(e)h(is)h(a)f(union)h(made)g(from)e
(the)i Fk(\045union)0 621 y Fp(declaration)e(\(see)g(Section)g(3.6.3)e
([The)i(Collection)h(of)e(V)l(alue)i(T)o(yp)q(es],)f(page)f(52\).)36
b(So)20 b(when)h(y)o(ou)f(store)g(a)0 683 y(tok)o(en's)15
b(v)m(alue,)i(y)o(ou)f(m)o(ust)f(use)i(the)f(prop)q(er)g(mem)o(b)q(er)g
(of)g(the)g(union.)23 b(If)17 b(the)f Fk(\045union)f
Fp(declaration)i(lo)q(oks)f(lik)o(e)0 746 y(this:)120
885 y Fk(\045union)23 b({)168 948 y(int)g(intval;)168
1010 y(double)g(val;)168 1072 y(symrec)g(*tptr;)120 1134
y(})0 1279 y Fp(then)16 b(the)f(co)q(de)h(in)g Fk(yylex)e
Fp(migh)o(t)h(lo)q(ok)h(lik)o(e)g(this:)168 1463 y Fh(:)8
b(:)g(:)168 1525 y Fk(yylval.intval)22 b(=)i(value;)f(/*)g(Put)h(value)
f(onto)g(Bison)g(stack.)g(*/)168 1587 y(return)g(INT;)238
b(/*)23 b(Return)g(the)h(type)f(of)h(the)f(token.)g(*/)168
1650 y Fh(:)8 b(:)g(:)0 1992 y Fj(4.2.3)30 b(T)-5 b(extual)15
b(P)n(ositions)g(of)g(T)-5 b(ok)n(ens)62 2144 y Fp(If)16
b(y)o(ou)e(are)h(using)h(the)f(`)p Fk(@)p Fl(n)p Fp('-feature)f(\(see)h
(Section)h(4.4)e([Sp)q(ecial)i(F)l(eatures)f(for)f(Use)h(in)h
(Actions],)f(page)g(61\))0 2207 y(in)k(actions)e(to)g(k)o(eep)h(trac)o
(k)f(of)g(the)h(textual)g(lo)q(cations)g(of)g(tok)o(ens)f(and)h
(groupings,)g(then)g(y)o(ou)f(m)o(ust)g(pro)o(vide)0
2269 y(this)h(information)g(in)h Fk(yylex)p Fp(.)26 b(The)18
b(function)h Fk(yyparse)e Fp(exp)q(ects)h(to)f(\014nd)i(the)e(textual)h
(lo)q(cation)h(of)e(a)g(tok)o(en)0 2331 y(just)g(parsed)g(in)h(the)f
(global)h(v)m(ariable)h Fk(yylloc)p Fp(.)25 b(So)17 b
Fk(yylex)f Fp(m)o(ust)h(store)f(the)i(prop)q(er)f(data)f(in)i(that)f(v)
m(ariable.)0 2393 y(The)f(v)m(alue)i(of)e Fk(yylloc)f
Fp(is)i(a)e(structure)h(and)h(y)o(ou)f(need)h(only)f(initialize)k(the)c
(mem)o(b)q(ers)g(that)g(are)g(going)g(to)f(b)q(e)0 2456
y(used)20 b(b)o(y)g(the)f(actions.)34 b(The)19 b(four)h(mem)o(b)q(ers)f
(are)h(called)h Fk(first_line)p Fp(,)e Fk(first_column)p
Fp(,)f Fk(last_line)h Fp(and)0 2518 y Fk(last_column)p
Fp(.)f(Note)d(that)g(the)g(use)g(of)g(this)h(feature)f(mak)o(es)f(the)i
(parser)f(noticeably)h(slo)o(w)o(er.)62 2670 y(The)g(data)e(t)o(yp)q(e)
i(of)e Fk(yylloc)h Fp(has)g(the)g(name)g Fk(YYLTYPE)p
Fp(.)p eop
%%Page: 60 62
60 61 bop 0 -58 a Fp(60)1697 b(Bison)16 b(1.20)0 183
y Fj(4.2.4)30 b(Calling)15 b(for)g(Pure)g(P)n(arsers)62
323 y Fp(When)21 b(y)o(ou)f(use)h(the)g(Bison)g(declaration)h
Fk(\045pure_parser)c Fp(to)i(request)h(a)f(pure,)i(reen)o(tran)o(t)e
(parser,)h(the)0 385 y(global)e(comm)o(unication)h(v)m(ariables)f
Fk(yylval)f Fp(and)h Fk(yylloc)f Fp(cannot)g(b)q(e)h(used.)31
b(\(See)19 b(Section)h(3.6.7)d([A)h(Pure)0 448 y(\(Reen)o(tran)o(t\))g
(P)o(arser],)f(page)i(54.\))29 b(In)19 b(suc)o(h)g(parsers)f(the)h(t)o
(w)o(o)e(global)i(v)m(ariables)h(are)e(replaced)i(b)o(y)f(p)q(oin)o
(ters)0 510 y(passed)f(as)f(argumen)o(ts)g(to)g Fk(yylex)p
Fp(.)27 b(Y)l(ou)17 b(m)o(ust)h(declare)g(them)g(as)f(sho)o(wn)g(here,)
i(and)f(pass)f(the)h(information)0 572 y(bac)o(k)d(b)o(y)g(storing)g
(it)h(through)e(those)h(p)q(oin)o(ters.)120 700 y Fk(yylex)23
b(\(lvalp,)g(llocp\))239 749 y(YYSTYPE)g(*lvalp;)239
799 y(YYLTYPE)g(*llocp;)120 849 y({)168 899 y Fh(:)8
b(:)g(:)168 949 y Fk(*lvalp)23 b(=)g(value;)47 b(/*)24
b(Put)f(value)h(onto)f(Bison)g(stack.)47 b(*/)168 998
y(return)23 b(INT;)142 b(/*)24 b(Return)f(the)g(type)h(of)f(the)h
(token.)47 b(*/)168 1048 y Fh(:)8 b(:)g(:)120 1098 y
Fk(})62 1238 y Fp(If)17 b(the)g(grammar)f(\014le)i(do)q(es)f(not)g(use)
g(the)g(`)p Fk(@)p Fp(')f(constructs)g(to)h(refer)f(to)h(textual)g(p)q
(ositions,)h(then)f(the)g(t)o(yp)q(e)0 1300 y Fk(YYLTYPE)12
b Fp(will)j(not)d(b)q(e)i(de\014ned.)20 b(In)14 b(this)f(case,)g(omit)g
(the)g(second)h(argumen)o(t;)e Fk(yylex)g Fp(will)j(b)q(e)f(called)g
(with)f(only)0 1362 y(one)i(argumen)o(t.)0 1612 y Fo(4.3)33
b(The)15 b(Error)h(Rep)r(orting)g(F)-6 b(unction)17 b
Fg(yyerror)62 1752 y Fp(The)f(Bison)g(parser)e(detects)i(a)f
Fl(parse)g(error)i Fp(or)e Fl(syn)o(tax)g(error)i Fp(whenev)o(er)f(it)f
(reads)g(a)g(tok)o(en)g(whic)o(h)h(cannot)0 1815 y(satisfy)g(an)o(y)h
(syn)o(tax)f(rule.)25 b(A)17 b(action)g(in)g(the)g(grammar)e(can)i
(also)g(explicitly)i(pro)q(claim)f(an)e(error,)g(using)i(the)0
1877 y(macro)c Fk(YYERROR)h Fp(\(see)g(Section)h(4.4)e([Sp)q(ecial)j(F)
l(eatures)e(for)f(Use)i(in)g(Actions],)f(page)g(61\).)62
2017 y(The)23 b(Bison)f(parser)g(exp)q(ects)h(to)f(rep)q(ort)f(the)i
(error)e(b)o(y)h(calling)i(an)e(error)f(rep)q(orting)i(function)g
(named)0 2079 y Fk(yyerror)p Fp(,)14 b(whic)o(h)i(y)o(ou)f(m)o(ust)f
(supply)l(.)22 b(It)15 b(is)g(called)i(b)o(y)e Fk(yyparse)f
Fp(whenev)o(er)i(a)f(syn)o(tax)f(error)h(is)g(found,)g(and)h(it)0
2141 y(receiv)o(es)g(one)f(argumen)o(t.)k(F)l(or)c(a)g(parse)g(error,)f
(the)h(string)h(is)f(normally)h Fk("parse)e(error")p
Fp(.)62 2281 y(If)k(y)o(ou)f(de\014ne)i(the)f(macro)f
Fk(YYERROR_VERBOSE)e Fp(in)k(the)f(Bison)g(declarations)g(section)g
(\(see)g(Section)h(3.1.2)0 2343 y([The)d(Bison)g(Declarations)g
(Section],)g(page)f(40\),)g(then)h(Bison)g(pro)o(vides)h(a)e(more)g(v)o
(erb)q(ose)h(and)g(sp)q(eci\014c)i(error)0 2406 y(message)d(string)h
(instead)g(of)g(just)f(plain)i Fk("parse)e(error")o Fp(.)21
b(It)16 b(do)q(esn't)g(matter)e(what)i(de\014nition)h(y)o(ou)f(use)g
(for)0 2468 y Fk(YYERROR_VERBOSE)p Fp(,)d(just)i(whether)g(y)o(ou)g
(de\014ne)h(it.)62 2608 y(The)d(parser)f(can)g(detect)h(one)f(other)g
(kind)i(of)e(error:)17 b(stac)o(k)12 b(o)o(v)o(er\015o)o(w.)18
b(This)13 b(happ)q(ens)g(when)g(the)f(input)i(con-)0
2670 y(tains)d(constructions)g(that)f(are)g(v)o(ery)g(deeply)j(nested.)
18 b(It)11 b(isn't)g(lik)o(ely)h(y)o(ou)f(will)h(encoun)o(ter)f(this,)h
(since)f(the)g(Bison)p eop
%%Page: 61 63
61 62 bop 0 -58 a Fp(Chapter)15 b(4:)k(P)o(arser)c(C-Language)g(In)o
(terface)1105 b(61)0 183 y(parser)16 b(extends)h(its)f(stac)o(k)f
(automatically)i(up)g(to)e(a)h(v)o(ery)g(large)g(limit.)25
b(But)16 b(if)h(o)o(v)o(er\015o)o(w)e(happ)q(ens,)i Fk(yyparse)0
246 y Fp(calls)f Fk(yyerror)e Fp(in)i(the)g(usual)g(fashion,)f(except)h
(that)e(the)h(argumen)o(t)g(string)g(is)h Fk("parser)e(stack)g
(overflow")o Fp(.)62 384 y(The)i(follo)o(wing)g(de\014nition)h
(su\016ces)e(in)h(simple)h(programs:)120 518 y Fk(yyerror)23
b(\(s\))239 580 y(char)h(*s;)120 642 y({)168 710 y(fprintf)f(\(stderr,)
f("\045s\\n",)h(s\);)120 772 y(})62 903 y Fp(After)c
Fk(yyerror)e Fp(returns)i(to)f Fk(yyparse)p Fp(,)g(the)h(latter)f(will)
i(attempt)e(error)g(reco)o(v)o(ery)g(if)h(y)o(ou)g(ha)o(v)o(e)f
(written)0 965 y(suitable)j(error)d(reco)o(v)o(ery)h(grammar)f(rules)i
(\(see)f(Chapter)g(6)g([Error)f(Reco)o(v)o(ery],)i(page)f(77\).)31
b(If)20 b(reco)o(v)o(ery)e(is)0 1027 y(imp)q(ossible,)f
Fk(yyparse)d Fp(will)j(immediately)g(return)e(1.)62 1165
y(The)i(v)m(ariable)h Fk(yynerrs)e Fp(con)o(tains)h(the)g(n)o(um)o(b)q
(er)g(of)f(syn)o(tax)g(errors)g(encoun)o(tered)h(so)g(far.)23
b(Normally)18 b(this)0 1228 y(v)m(ariable)f(is)g(global;)f(but)g(if)g
(y)o(ou)g(request)f(a)h(pure)g(parser)g(\(see)f(Section)i(3.6.7)d([A)i
(Pure)g(\(Reen)o(tran)o(t\))f(P)o(arser],)0 1290 y(page)g(54\))f(then)i
(it)f(is)h(a)f(lo)q(cal)h(v)m(ariable)h(whic)o(h)f(only)g(the)f
(actions)g(can)h(access.)0 1524 y Fo(4.4)33 b(Sp)r(ecial)16
b(F)-6 b(eatures)15 b(for)g(Use)f(in)i(Actions)62 1662
y Fp(Here)g(is)f(a)g(table)h(of)f(Bison)h(constructs,)e(v)m(ariables)j
(and)e(macros)f(that)h(are)g(useful)h(in)g(actions.)0
1814 y(`)p Fk($$)p Fp(')166 b(Acts)20 b(lik)o(e)h(a)f(v)m(ariable)h
(that)e(con)o(tains)i(the)f(seman)o(tic)g(v)m(alue)h(for)e(the)i
(grouping)f(made)g(b)o(y)g(the)240 1876 y(curren)o(t)15
b(rule.)21 b(See)16 b(Section)g(3.5.3)d([Actions],)i(page)g(45.)0
1966 y(`)p Fk($)p Fl(n)p Fp(')165 b(Acts)20 b(lik)o(e)i(a)e(v)m
(ariable)i(that)e(con)o(tains)g(the)h(seman)o(tic)g(v)m(alue)g(for)f
(the)h Fl(n)p Fp(th)f(comp)q(onen)o(t)h(of)f(the)240
2028 y(curren)o(t)15 b(rule.)21 b(See)16 b(Section)g(3.5.3)d
([Actions],)i(page)g(45.)0 2118 y(`)p Fk($<)p Fl(t)o(yp)q(ealt)q
Fk(>$)p Fp(')240 2180 y(Lik)o(e)i Fk($$)e Fp(but)h(sp)q(eci\014es)i
(alternativ)o(e)e Fl(t)o(yp)q(ealt)h Fp(in)f(the)g(union)h(sp)q
(eci\014ed)h(b)o(y)e(the)f Fk(\045union)g Fp(declara-)240
2242 y(tion.)20 b(See)c(Section)g(3.5.4)e([Data)f(T)o(yp)q(es)j(of)e(V)
l(alues)j(in)f(Actions],)e(page)i(47.)0 2331 y(`)p Fk($<)p
Fl(t)o(yp)q(ealt)q Fk(>)p Fl(n)p Fp(')240 2394 y(Lik)o(e)h
Fk($)p Fl(n)e Fp(but)h(sp)q(eci\014es)i(alternativ)o(e)e
Fl(t)o(yp)q(ealt)g Fp(in)h(the)f(union)g(sp)q(eci\014ed)i(b)o(y)e(the)f
Fk(\045union)g Fp(declara-)240 2456 y(tion.)20 b(See)c(Section)g(3.5.4)
e([Data)f(T)o(yp)q(es)j(of)e(V)l(alues)j(in)f(Actions],)e(page)i(47.)0
2545 y(`)p Fk(YYABORT;)p Fp(')240 2608 y(Return)22 b(immediately)h
(from)e Fk(yyparse)p Fp(,)h(indicating)i(failure.)40
b(See)22 b(Section)h(4.1)d([The)i(P)o(arser)240 2670
y(F)l(unction)16 b Fk(yyparse)p Fp(],)d(page)j(57.)p
eop
%%Page: 62 64
62 63 bop 0 -58 a Fp(62)1697 b(Bison)16 b(1.20)0 183
y(`)p Fk(YYACCEPT;)p Fp(')240 246 y(Return)21 b(immediately)h(from)e
Fk(yyparse)p Fp(,)g(indicating)j(success.)36 b(See)21
b(Section)g(4.1)f([The)g(P)o(arser)240 308 y(F)l(unction)c
Fk(yyparse)p Fp(],)d(page)j(57.)0 393 y(`)p Fk(YYBACKUP)e(\()p
Fl(tok)o(en)p Fk(,)g Fl(v)m(alue)s Fk(\);)p Fp(')240
456 y(Unshift)k(a)f(tok)o(en.)25 b(This)17 b(macro)g(is)g(allo)o(w)o
(ed)h(only)f(for)g(rules)h(that)e(reduce)i(a)f(single)h(v)m(alue,)h
(and)240 518 y(only)c(when)f(there)g(is)h(no)f(lo)q(ok-ahead)h(tok)o
(en.)k(It)14 b(installs)i(a)d(lo)q(ok-ahead)i(tok)o(en)f(with)g(tok)o
(en)g(t)o(yp)q(e)240 580 y Fl(tok)o(en)e Fp(and)h(seman)o(tic)g(v)m
(alue)g Fl(v)m(alue)s Fp(;)h(then)f(it)g(discards)g(the)g(v)m(alue)h
(that)d(w)o(as)h(going)h(to)f(b)q(e)h(reduced)240 642
y(b)o(y)i(this)h(rule.)240 716 y(If)k(the)f(macro)g(is)h(used)g(when)f
(it)h(is)g(not)f(v)m(alid,)j(suc)o(h)d(as)g(when)h(there)g(is)f(a)g(lo)
q(ok-ahead)h(tok)o(en)240 779 y(already)l(,)c(then)g(it)g(rep)q(orts)f
(a)g(syn)o(tax)g(error)g(with)h(a)f(message)g(`)p Fk(cannot)f(back)h
(up)p Fp(')f(and)i(p)q(erforms)240 841 y(ordinary)f(error)g(reco)o(v)o
(ery)l(.)240 915 y(In)h(either)g(case,)f(the)g(rest)g(of)f(the)i
(action)f(is)h(not)f(executed.)0 1000 y(`)p Fk(YYEMPTY)p
Fp(')46 b(V)l(alue)16 b(stored)f(in)h Fk(yychar)e Fp(when)i(there)f(is)
h(no)f(lo)q(ok-ahead)h(tok)o(en.)0 1086 y(`)p Fk(YYERROR;)p
Fp(')240 1148 y(Cause)e(an)g(immediate)h(syn)o(tax)e(error.)19
b(This)14 b(statemen)o(t)f(initiates)j(error)d(reco)o(v)o(ery)g(just)h
(as)f(if)i(the)240 1210 y(parser)k(itself)g(had)g(detected)h(an)f
(error;)g(ho)o(w)o(ev)o(er,)g(it)g(do)q(es)g(not)g(call)h
Fk(yyerror)p Fp(,)e(and)h(do)q(es)g(not)240 1273 y(prin)o(t)13
b(an)o(y)f(message.)18 b(If)13 b(y)o(ou)f(w)o(an)o(t)f(to)h(prin)o(t)h
(an)f(error)g(message,)g(call)h Fk(yyerror)f Fp(explicitly)j(b)q(efore)
240 1335 y(the)g(`)p Fk(YYERROR;)p Fp(')f(statemen)o(t.)k(See)e
(Chapter)f(6)g([Error)f(Reco)o(v)o(ery],)g(page)h(77.)0
1420 y(`)p Fk(YYRECOVERING)p Fp(')240 1483 y(This)g(macro)e(stands)h
(for)f(an)h(expression)h(that)e(has)h(the)g(v)m(alue)h(1)f(when)h(the)f
(parser)f(is)i(reco)o(v)o(ering)240 1545 y(from)10 b(a)h(syn)o(tax)g
(error,)g(and)g(0)g(the)g(rest)g(of)f(the)i(time.)18
b(See)12 b(Chapter)f(6)g([Error)f(Reco)o(v)o(ery],)h(page)g(77.)0
1630 y(`)p Fk(yychar)p Fp(')70 b(V)l(ariable)17 b(con)o(taining)f(the)g
(curren)o(t)f(lo)q(ok-ahead)i(tok)o(en.)j(\(In)c(a)g(pure)g(parser,)f
(this)h(is)g(actually)g(a)240 1693 y(lo)q(cal)f(v)m(ariable)g(within)h
Fk(yyparse)p Fp(.\))i(When)c(there)g(is)h(no)f(lo)q(ok-ahead)g(tok)o
(en,)g(the)g(v)m(alue)h Fk(YYEMPTY)240 1755 y Fp(is)h(stored)e(in)i
(the)g(v)m(ariable.)21 b(See)16 b(Section)g(5.1)e([Lo)q(ok-Ahead)i(T)l
(ok)o(ens],)e(page)h(66.)0 1841 y(`)p Fk(yyclearin;)p
Fp(')240 1903 y(Discard)22 b(the)f(curren)o(t)h(lo)q(ok-ahead)g(tok)o
(en.)38 b(This)22 b(is)g(useful)h(primarily)g(in)f(error)f(rules.)39
b(See)240 1965 y(Chapter)15 b(6)g([Error)f(Reco)o(v)o(ery],)g(page)h
(77.)0 2051 y(`)p Fk(yyerrok;)p Fp(')240 2113 y(Resume)j(generating)g
(error)e(messages)h(immediately)i(for)e(subsequen)o(t)h(syn)o(tax)e
(errors.)26 b(This)17 b(is)240 2175 y(useful)f(primarily)h(in)f(error)e
(rules.)21 b(See)16 b(Chapter)f(6)g([Error)e(Reco)o(v)o(ery],)i(page)g
(77.)0 2261 y(`)p Fk(@)p Fl(n)p Fp(')165 b(Acts)16 b(lik)o(e)h(a)e
(structure)h(v)m(ariable)h(con)o(taining)g(information)f(on)f(the)h
(line)i(n)o(um)o(b)q(ers)e(and)g(column)240 2323 y(n)o(um)o(b)q(ers)h
(of)g(the)h Fl(n)p Fp(th)f(comp)q(onen)o(t)g(of)g(the)g(curren)o(t)g
(rule.)27 b(The)17 b(structure)g(has)g(four)g(mem)o(b)q(ers,)240
2385 y(lik)o(e)f(this:)360 2447 y Fk(struct)23 b({)408
2496 y(int)g(first_line,)g(last_line;)408 2546 y(int)g(first_column,)f
(last_column;)360 2596 y(};)240 2670 y Fp(Th)o(us,)15
b(to)f(get)h(the)g(starting)g(line)i(n)o(um)o(b)q(er)e(of)g(the)g
(third)h(comp)q(onen)o(t,)f(use)h(`)p Fk(@3.first_line)p
Fp('.)p eop
%%Page: 63 65
63 64 bop 0 -58 a Fp(Chapter)15 b(4:)k(P)o(arser)c(C-Language)g(In)o
(terface)1105 b(63)240 183 y(In)14 b(order)f(for)f(the)h(mem)o(b)q(ers)
h(of)f(this)g(structure)g(to)g(con)o(tain)g(v)m(alid)i(information,)e
(y)o(ou)g(m)o(ust)f(mak)o(e)240 246 y Fk(yylex)18 b Fp(supply)h(this)g
(information)f(ab)q(out)g(eac)o(h)h(tok)o(en.)28 b(If)19
b(y)o(ou)f(need)h(only)g(certain)f(mem)o(b)q(ers,)240
308 y(then)e Fk(yylex)e Fp(need)i(only)g(\014ll)g(in)h(those)d(mem)o(b)
q(ers.)240 382 y(The)h(use)h(of)f(this)g(feature)g(mak)o(es)g(the)g
(parser)g(noticeably)h(slo)o(w)o(er.)p eop
%%Page: 64 66
64 65 bop 0 -58 a Fp(64)1697 b(Bison)16 b(1.20)p eop
%%Page: 65 67
65 66 bop 0 -58 a Fp(Chapter)15 b(5:)k(The)d(Bison)g(P)o(arser)e
(Algorithm)1109 b(65)0 183 y Fm(5)41 b(The)15 b(Bison)g(P)n(arser)f
(Algorithm)62 416 y Fp(As)h(Bison)g(reads)f(tok)o(ens,)f(it)i(pushes)g
(them)f(on)o(to)g(a)g(stac)o(k)f(along)h(with)h(their)g(seman)o(tic)f
(v)m(alues.)21 b(The)15 b(stac)o(k)0 478 y(is)h(called)g(the)g
Fl(parser)f(stac)o(k)p Fp(.)k(Pushing)d(a)f(tok)o(en)f(is)i
(traditionally)h(called)f Fl(shifting)p Fp(.)62 624 y(F)l(or)f
(example,)h(supp)q(ose)g(the)f(in\014x)i(calculator)f(has)f(read)g(`)p
Fk(1)g(+)g(5)g(*)p Fp(',)f(with)i(a)f(`)p Fk(3)p Fp(')f(to)h(come.)20
b(The)c(stac)o(k)e(will)0 686 y(ha)o(v)o(e)h(four)g(elemen)o(ts,)g(one)
g(for)g(eac)o(h)g(tok)o(en)g(that)g(w)o(as)f(shifted.)62
832 y(But)19 b(the)f(stac)o(k)g(do)q(es)g(not)g(alw)o(a)o(ys)g(ha)o(v)o
(e)g(an)g(elemen)o(t)h(for)f(eac)o(h)g(tok)o(en)g(read.)30
b(When)18 b(the)h(last)f Fl(n)g Fp(tok)o(ens)0 894 y(and)e(groupings)g
(shifted)h(matc)o(h)f(the)g(comp)q(onen)o(ts)g(of)g(a)f(grammar)g
(rule,)h(they)h(can)f(b)q(e)g(com)o(bined)h(according)0
957 y(to)e(that)h(rule.)23 b(This)17 b(is)f(called)i
Fl(reduction)p Fp(.)24 b(Those)16 b(tok)o(ens)f(and)h(groupings)h(are)e
(replaced)j(on)e(the)g(stac)o(k)f(b)o(y)h(a)0 1019 y(single)e(grouping)
g(whose)e(sym)o(b)q(ol)i(is)f(the)g(result)h(\(left)f(hand)g(side\))h
(of)e(that)g(rule.)20 b(Running)15 b(the)e(rule's)g(action)g(is)0
1081 y(part)h(of)g(the)h(pro)q(cess)g(of)f(reduction,)i(b)q(ecause)f
(this)g(is)h(what)e(computes)g(the)h(seman)o(tic)g(v)m(alue)h(of)e(the)
h(resulting)0 1144 y(grouping.)62 1290 y(F)l(or)g(example,)g(if)h(the)f
(in\014x)i(calculator's)e(parser)g(stac)o(k)f(con)o(tains)i(this:)120
1423 y Fk(1)24 b(+)f(5)h(*)g(3)0 1569 y Fp(and)15 b(the)g(next)g(input)
g(tok)o(en)g(is)g(a)f(newline)j(c)o(haracter,)d(then)h(the)f(last)h
(three)g(elemen)o(ts)g(can)g(b)q(e)h(reduced)f(to)g(15)0
1632 y(via)g(the)h(rule:)120 1765 y Fk(expr:)23 b(expr)g('*')h(expr;)0
1911 y Fp(Then)16 b(the)f(stac)o(k)f(con)o(tains)i(just)f(these)g
(three)g(elemen)o(ts:)120 2045 y Fk(1)24 b(+)f(15)0 2191
y Fp(A)o(t)16 b(this)i(p)q(oin)o(t,)f(another)f(reduction)i(can)f(b)q
(e)g(made,)g(resulting)h(in)g(the)f(single)h(v)m(alue)g(16.)24
b(Then)17 b(the)g(newline)0 2253 y(tok)o(en)e(can)g(b)q(e)h(shifted.)62
2399 y(The)i(parser)g(tries,)g(b)o(y)g(shifts)g(and)g(reductions,)h(to)
e(reduce)i(the)f(en)o(tire)g(input)h(do)o(wn)e(to)g(a)h(single)h
(group-)0 2462 y(ing)i(whose)g(sym)o(b)q(ol)g(is)g(the)f(grammar's)f
(start-sym)o(b)q(ol)h(\(see)h(Section)g(1.1)f([Languages)g(and)h(Con)o
(text-F)l(ree)0 2524 y(Grammars],)13 b(page)i(13\).)62
2670 y(This)h(kind)g(of)f(parser)g(is)h(kno)o(wn)f(in)h(the)f
(literature)h(as)e(a)h(b)q(ottom-up)g(parser.)p eop
%%Page: 66 68
66 67 bop 0 -58 a Fp(66)1697 b(Bison)16 b(1.20)0 183
y Fo(5.1)33 b(Lo)r(ok-Ahead)15 b(T)-6 b(ok)n(ens)62 334
y Fp(The)13 b(Bison)g(parser)f(do)q(es)h Fl(not)g Fp(alw)o(a)o(ys)e
(reduce)j(immediately)g(as)e(so)q(on)g(as)g(the)g(last)h
Fl(n)f Fp(tok)o(ens)g(and)h(groupings)0 396 y(matc)o(h)20
b(a)h(rule.)37 b(This)22 b(is)f(b)q(ecause)h(suc)o(h)f(a)f(simple)j
(strategy)c(is)i(inadequate)h(to)e(handle)i(most)e(languages.)0
459 y(Instead,)g(when)g(a)f(reduction)h(is)g(p)q(ossible,)h(the)f
(parser)f(sometimes)g(\\lo)q(oks)g(ahead")g(at)g(the)g(next)g(tok)o(en)
g(in)0 521 y(order)c(to)f(decide)j(what)e(to)g(do.)62
672 y(When)e(a)g(tok)o(en)f(is)i(read,)e(it)h(is)h(not)e(immediately)j
(shifted;)f(\014rst)e(it)h(b)q(ecomes)g(the)g Fl(lo)q(ok-ahead)h(tok)o
(en)p Fp(,)e(whic)o(h)0 734 y(is)17 b(not)f(on)h(the)g(stac)o(k.)23
b(No)o(w)16 b(the)h(parser)f(can)h(p)q(erform)f(one)h(or)f(more)g
(reductions)i(of)e(tok)o(ens)g(and)h(groupings)0 796
y(on)e(the)g(stac)o(k,)e(while)k(the)d(lo)q(ok-ahead)i(tok)o(en)e
(remains)h(o\013)f(to)g(the)h(side.)21 b(When)15 b(no)g(more)f
(reductions)i(should)0 858 y(tak)o(e)i(place,)h(the)g(lo)q(ok-ahead)g
(tok)o(en)e(is)i(shifted)g(on)o(to)f(the)g(stac)o(k.)29
b(This)18 b(do)q(es)h(not)f(mean)g(that)g(all)h(p)q(ossible)0
921 y(reductions)e(ha)o(v)o(e)e(b)q(een)i(done;)f(dep)q(ending)i(on)d
(the)h(tok)o(en)f(t)o(yp)q(e)h(of)g(the)f(lo)q(ok-ahead)i(tok)o(en,)e
(some)g(rules)i(ma)o(y)0 983 y(c)o(ho)q(ose)e(to)g(dela)o(y)g(their)h
(application.)62 1134 y(Here)i(is)h(a)e(simple)j(case)e(where)g(lo)q
(ok-ahead)g(is)g(needed.)30 b(These)18 b(three)g(rules)g(de\014ne)h
(expressions)g(whic)o(h)0 1196 y(con)o(tain)13 b(binary)g(addition)h
(op)q(erators)e(and)h(p)q(ost\014x)g(unary)g(factorial)g(op)q(erators)e
(\(`)p Fk(!)p Fp('\),)h(and)h(allo)o(w)g(paren)o(theses)0
1258 y(for)i(grouping.)120 1405 y Fk(expr:)119 b(term)23
b('+')g(expr)311 1467 y(|)h(term)311 1529 y(;)120 1602
y(term:)119 b('\(')23 b(expr)g('\)')311 1665 y(|)h(term)f('!')311
1727 y(|)h(NUMBER)311 1789 y(;)62 1933 y Fp(Supp)q(ose)12
b(that)e(the)h(tok)o(ens)f(`)p Fk(1)k(+)h(2)p Fp(')10
b(ha)o(v)o(e)h(b)q(een)g(read)g(and)g(shifted;)h(what)e(should)i(b)q(e)
f(done?)20 b(If)11 b(the)f(follo)o(wing)0 1995 y(tok)o(en)17
b(is)h(`)p Fk(\))p Fp(',)f(then)h(the)f(\014rst)h(three)f(tok)o(ens)g
(m)o(ust)g(b)q(e)h(reduced)h(to)e(form)g(an)g Fk(expr)p
Fp(.)26 b(This)19 b(is)f(the)f(only)h(v)m(alid)0 2057
y(course,)d(b)q(ecause)g(shifting)h(the)f(`)p Fk(\))p
Fp(')f(w)o(ould)h(pro)q(duce)h(a)e(sequence)i(of)f(sym)o(b)q(ols)g
Fk(term)f('\)')p Fp(,)g(and)h(no)g(rule)h(allo)o(ws)0
2119 y(this.)62 2270 y(If)f(the)f(follo)o(wing)h(tok)o(en)f(is)h(`)p
Fk(!)p Fp(',)e(then)h(it)h(m)o(ust)e(b)q(e)i(shifted)g(immediately)h
(so)e(that)g(`)p Fk(2)g(!)p Fp(')g(can)g(b)q(e)h(reduced)h(to)0
2332 y(mak)o(e)d(a)f Fk(term)p Fp(.)19 b(If)13 b(instead)h(the)f
(parser)g(w)o(ere)g(to)f(reduce)i(b)q(efore)g(shifting,)g(`)p
Fk(1)g(+)h(2)p Fp(')e(w)o(ould)g(b)q(ecome)h(an)f Fk(expr)p
Fp(.)19 b(It)0 2395 y(w)o(ould)14 b(then)f(b)q(e)h(imp)q(ossible)i(to)c
(shift)i(the)f(`)p Fk(!)p Fp(')g(b)q(ecause)h(doing)g(so)f(w)o(ould)g
(pro)q(duce)h(on)g(the)f(stac)o(k)f(the)i(sequence)0
2457 y(of)h(sym)o(b)q(ols)g Fk(expr)g('!')p Fp(.)k(No)c(rule)h(allo)o
(ws)g(that)e(sequence.)62 2608 y(The)g(curren)o(t)f(lo)q(ok-ahead)h
(tok)o(en)e(is)i(stored)f(in)h(the)f(v)m(ariable)i Fk(yychar)p
Fp(.)j(See)c(Section)g(4.4)e([Sp)q(ecial)j(F)l(eatures)0
2670 y(for)g(Use)g(in)h(Actions],)f(page)g(61.)p eop
%%Page: 67 69
67 68 bop 0 -58 a Fp(Chapter)15 b(5:)k(The)d(Bison)g(P)o(arser)e
(Algorithm)1109 b(67)0 183 y Fo(5.2)33 b(Shift/Reduce)16
b(Con\015icts)62 323 y Fp(Supp)q(ose)g(w)o(e)e(are)g(parsing)h(a)g
(language)f(whic)o(h)i(has)e(if-then)i(and)e(if-then-else)j(statemen)o
(ts,)c(with)i(a)f(pair)h(of)0 385 y(rules)h(lik)o(e)g(this:)120
513 y Fk(if_stmt:)359 575 y(IF)23 b(expr)h(THEN)f(stmt)311
637 y(|)h(IF)f(expr)h(THEN)f(stmt)g(ELSE)g(stmt)311 699
y(;)0 832 y Fp(Here)15 b(w)o(e)g(assume)g(that)g Fk(IF)p
Fp(,)f Fk(THEN)h Fp(and)g Fk(ELSE)g Fp(are)g(terminal)h(sym)o(b)q(ols)f
(for)g(sp)q(eci\014c)i(k)o(eyw)o(ord)d(tok)o(ens.)62
972 y(When)22 b(the)f Fk(ELSE)g Fp(tok)o(en)g(is)h(read)f(and)g(b)q
(ecomes)h(the)g(lo)q(ok-ahead)g(tok)o(en,)f(the)h(con)o(ten)o(ts)f(of)f
(the)i(stac)o(k)0 1034 y(\(assuming)15 b(the)h(input)g(is)g(v)m(alid\))
g(are)f(just)g(righ)o(t)g(for)g(reduction)h(b)o(y)f(the)g(\014rst)g
(rule.)21 b(But)16 b(it)f(is)h(also)f(legitimate)0 1096
y(to)g(shift)g(the)g Fk(ELSE)p Fp(,)g(b)q(ecause)h(that)e(w)o(ould)i
(lead)g(to)e(ev)o(en)o(tual)i(reduction)g(b)o(y)f(the)g(second)h(rule.)
62 1236 y(This)d(situation,)f(where)g(either)g(a)g(shift)g(or)f(a)g
(reduction)i(w)o(ould)f(b)q(e)g(v)m(alid,)i(is)e(called)h(a)f
Fl(shift/reduce)g(con\015ict)p Fp(.)0 1298 y(Bison)f(is)h(designed)g
(to)e(resolv)o(e)h(these)g(con\015icts)h(b)o(y)e(c)o(ho)q(osing)h(to)g
(shift,)g(unless)h(otherwise)f(directed)h(b)o(y)f(op)q(erator)0
1361 y(precedence)17 b(declarations.)k(T)l(o)14 b(see)i(the)f(reason)g
(for)g(this,)g(let's)g(con)o(trast)f(it)h(with)h(the)f(other)g
(alternativ)o(e.)62 1501 y(Since)g(the)f(parser)f(prefers)g(to)g(shift)
h(the)f Fk(ELSE)p Fp(,)g(the)h(result)f(is)h(to)f(attac)o(h)f(the)i
(else-clause)h(to)e(the)h(innermost)0 1563 y(if-statemen)o(t,)g(making)
i(these)f(t)o(w)o(o)f(inputs)i(equiv)m(alen)o(t:)120
1690 y Fk(if)24 b(x)f(then)h(if)f(y)h(then)f(win)h(\(\);)f(else)g
(lose;)120 1790 y(if)h(x)f(then)h(do;)f(if)h(y)f(then)h(win)f(\(\);)h
(else)f(lose;)g(end;)62 1930 y Fp(But)15 b(if)g(the)g(parser)g(c)o
(hose)g(to)f(reduce)h(when)h(p)q(ossible)g(rather)f(than)f(shift,)h
(the)g(result)g(w)o(ould)g(b)q(e)h(to)e(attac)o(h)0 1992
y(the)h(else-clause)i(to)e(the)g(outermost)f(if-statemen)o(t,)h(making)
g(these)h(t)o(w)o(o)d(inputs)k(equiv)m(alen)o(t:)120
2119 y Fk(if)24 b(x)f(then)h(if)f(y)h(then)f(win)h(\(\);)f(else)g
(lose;)120 2219 y(if)h(x)f(then)h(do;)f(if)h(y)f(then)h(win)f(\(\);)h
(end;)f(else)g(lose;)62 2359 y Fp(The)17 b(con\015ict)g(exists)g(b)q
(ecause)h(the)e(grammar)f(as)h(written)h(is)g(am)o(biguous:)22
b(either)17 b(parsing)g(of)f(the)g(simple)0 2421 y(nested)f
(if-statemen)o(t)f(is)g(legitimate.)21 b(The)14 b(established)i(con)o
(v)o(en)o(tion)e(is)h(that)f(these)g(am)o(biguities)i(are)e(resolv)o
(ed)0 2483 y(b)o(y)21 b(attac)o(hing)g(the)h(else-clause)h(to)e(the)g
(innermost)h(if-statemen)o(t;)i(this)d(is)h(what)f(Bison)h
(accomplishes)h(b)o(y)0 2545 y(c)o(ho)q(osing)11 b(to)g(shift)g(rather)
f(than)h(reduce.)19 b(\(It)11 b(w)o(ould)g(ideally)i(b)q(e)e(cleaner)h
(to)f(write)g(an)f(unam)o(biguous)i(grammar,)0 2608 y(but)18
b(that)f(is)h(v)o(ery)f(hard)h(to)f(do)g(in)i(this)f(case.\))27
b(This)18 b(particular)g(am)o(biguit)o(y)g(w)o(as)f(\014rst)g(encoun)o
(tered)h(in)h(the)0 2670 y(sp)q(eci\014cations)e(of)e(Algol)h(60)e(and)
i(is)f(called)i(the)f(\\dangling)g Fk(else)p Fp(")e(am)o(biguit)o(y)l
(.)p eop
%%Page: 68 70
68 69 bop 0 -58 a Fp(68)1697 b(Bison)16 b(1.20)62 183
y(T)l(o)24 b(a)o(v)o(oid)g(w)o(arnings)g(from)f(Bison)i(ab)q(out)e
(predictable,)28 b(legitimate)d(shift/reduce)g(con\015icts,)i(use)d
(the)0 246 y Fk(\045expect)14 b Fl(n)h Fp(declaration.)20
b(There)15 b(will)i(b)q(e)e(no)g(w)o(arning)f(as)g(long)h(as)f(the)h(n)
o(um)o(b)q(er)g(of)f(shift/reduce)i(con\015icts)f(is)0
308 y(exactly)h Fl(n)p Fp(.)k(See)15 b(Section)i(3.6.5)c([Suppressing)j
(Con\015ict)g(W)l(arnings],)f(page)g(53.)62 445 y(The)k(de\014nition)i
(of)e Fk(if_stmt)f Fp(ab)q(o)o(v)o(e)g(is)i(solely)g(to)e(blame)h(for)g
(the)g(con\015ict,)h(but)f(the)g(con\015ict)h(do)q(es)f(not)0
507 y(actually)13 b(app)q(ear)f(without)f(additional)j(rules.)19
b(Here)12 b(is)h(a)e(complete)i(Bison)f(input)h(\014le)g(that)e
(actually)i(manifests)0 569 y(the)i(con\015ict:)120 694
y Fk(\045token)23 b(IF)h(THEN)f(ELSE)g(variable)120 756
y(\045\045)120 824 y(stmt:)119 b(expr)311 886 y(|)24
b(if_stmt)311 948 y(;)120 1021 y(if_stmt:)359 1084 y(IF)f(expr)h(THEN)f
(stmt)311 1146 y(|)h(IF)f(expr)h(THEN)f(stmt)g(ELSE)g(stmt)311
1208 y(;)120 1281 y(expr:)119 b(variable)311 1331 y(;)0
1554 y Fo(5.3)33 b(Op)r(erator)15 b(Precedence)62 1691
y Fp(Another)e(situation)h(where)f(shift/reduce)h(con\015icts)g(app)q
(ear)f(is)h(in)g(arithmetic)g(expressions.)20 b(Here)13
b(shifting)0 1754 y(is)j(not)f(alw)o(a)o(ys)f(the)h(preferred)h
(resolution;)f(the)h(Bison)g(declarations)f(for)g(op)q(erator)f
(precedence)j(allo)o(w)f(y)o(ou)f(to)0 1816 y(sp)q(ecify)i(when)e(to)g
(shift)g(and)h(when)f(to)g(reduce.)0 2022 y Fj(5.3.1)30
b(When)16 b(Precedence)f(is)h(Needed)62 2159 y Fp(Consider)g(the)f
(follo)o(wing)h(am)o(biguous)f(grammar)e(fragmen)o(t)h(\(am)o(biguous)h
(b)q(ecause)h(the)f(input)h(`)p Fk(1)e(-)h(2)g(*)h(3)p
Fp(')0 2222 y(can)f(b)q(e)h(parsed)g(in)g(t)o(w)o(o)d(di\013eren)o(t)j
(w)o(a)o(ys\):)120 2357 y Fk(expr:)119 b(expr)23 b('-')g(expr)311
2419 y(|)h(expr)f('*')g(expr)311 2482 y(|)h(expr)f('<')g(expr)311
2544 y(|)h('\(')f(expr)g('\)')311 2606 y Fh(:)8 b(:)g(:)311
2668 y Fk(;)p eop
%%Page: 69 71
69 70 bop 0 -58 a Fp(Chapter)15 b(5:)k(The)d(Bison)g(P)o(arser)e
(Algorithm)1109 b(69)0 183 y(Supp)q(ose)17 b(the)g(parser)f(has)g(seen)
h(the)g(tok)o(ens)f(`)p Fk(1)p Fp(',)f(`)p Fk(-)p Fp(')h(and)g(`)p
Fk(2)p Fp(';)g(should)h(it)g(reduce)g(them)g(via)f(the)h(rule)g(for)f
(the)0 246 y(addition)21 b(op)q(erator?)34 b(It)20 b(dep)q(ends)h(on)f
(the)g(next)g(tok)o(en.)34 b(Of)20 b(course,)h(if)f(the)g(next)g(tok)o
(en)g(is)g(`)p Fk(\))p Fp(',)g(w)o(e)g(m)o(ust)0 308
y(reduce;)c(shifting)g(is)f(in)o(v)m(alid)j(b)q(ecause)e(no)f(single)h
(rule)g(can)g(reduce)g(the)f(tok)o(en)g(sequence)h(`)p
Fk(-)f(2)g(\))p Fp(')f(or)h(an)o(ything)0 370 y(starting)f(with)g
(that.)19 b(But)c(if)f(the)h(next)f(tok)o(en)g(is)h(`)p
Fk(*)p Fp(')e(or)h(`)p Fk(<)p Fp(',)f(w)o(e)i(ha)o(v)o(e)e(a)i(c)o
(hoice:)20 b(either)15 b(shifting)g(or)f(reduction)0
432 y(w)o(ould)i(allo)o(w)f(the)g(parse)g(to)g(complete,)g(but)h(with)f
(di\013eren)o(t)h(results.)62 571 y(T)l(o)g(decide)h(whic)o(h)f(one)g
(Bison)g(should)h(do,)e(w)o(e)h(m)o(ust)f(consider)h(the)g(results.)21
b(If)16 b(the)g(next)g(op)q(erator)e(tok)o(en)0 633 y
Fl(op)19 b Fp(is)e(shifted,)i(then)e(it)h(m)o(ust)f(b)q(e)h(reduced)g
(\014rst)f(in)h(order)f(to)g(p)q(ermit)h(another)f(opp)q(ortunit)o(y)g
(to)g(reduce)h(the)0 695 y(sum.)h(The)12 b(result)h(is)f(\(in)h
(e\013ect\))e(`)p Fk(1)k(-)g(\(2)g Fl(op)h Fk(3\))p Fp('.)j(On)12
b(the)g(other)g(hand,)h(if)g(the)f(subtraction)g(is)g(reduced)i(b)q
(efore)0 757 y(shifting)j Fl(op)p Fp(,)e(the)h(result)h(is)f(`)p
Fk(\(1)f(-)g(2\))f Fl(op)j Fk(3)p Fp(')o(.)22 b(Clearly)l(,)17
b(then,)f(the)g(c)o(hoice)h(of)e(shift)h(or)g(reduce)g(should)h(dep)q
(end)0 820 y(on)e(the)g(relativ)o(e)h(precedence)h(of)e(the)g(op)q
(erators)f(`)p Fk(-)p Fp(')h(and)g Fl(op)q Fp(:)20 b(`)p
Fk(*)p Fp(')15 b(should)h(b)q(e)g(shifted)g(\014rst,)e(but)h(not)g(`)p
Fk(<)p Fp('.)62 958 y(What)e(ab)q(out)g(input)h(suc)o(h)g(as)f(`)p
Fk(1)h(-)h(2)g(-)g(5)p Fp(';)e(should)i(this)e(b)q(e)h(`)p
Fk(\(1)h(-)g(2\))g(-)g(5)p Fp(')d(or)h(should)h(it)g(b)q(e)g(`)p
Fk(1)g(-)h(\(2)g(-)g(5\))p Fp('?)0 1020 y(F)l(or)i(most)h(op)q(erators)
f(w)o(e)h(prefer)g(the)g(former,)g(whic)o(h)h(is)f(called)i
Fl(left)e(asso)q(ciation)p Fp(.)29 b(The)18 b(latter)g(alternativ)o(e,)
0 1082 y Fl(righ)o(t)g(asso)q(ciation)p Fp(,)h(is)g(desirable)h(for)d
(assignmen)o(t)i(op)q(erators.)28 b(The)18 b(c)o(hoice)h(of)f(left)h
(or)f(righ)o(t)g(asso)q(ciation)g(is)0 1145 y(a)e(matter)f(of)h
(whether)g(the)g(parser)g(c)o(ho)q(oses)g(to)g(shift)g(or)g(reduce)h
(when)f(the)h(stac)o(k)e(con)o(tains)h(`)p Fk(1)f(-)g(2)p
Fp(')h(and)g(the)0 1207 y(lo)q(ok-ahead)g(tok)o(en)f(is)g(`)p
Fk(-)p Fp(':)k(shifting)d(mak)o(es)f(righ)o(t-asso)q(ciativit)o(y)l(.)0
1425 y Fj(5.3.2)30 b(Sp)r(ecifying)15 b(Op)r(erator)g(Precedence)62
1564 y Fp(Bison)i(allo)o(ws)f(y)o(ou)g(to)f(sp)q(ecify)i(these)f(c)o
(hoices)h(with)f(the)g(op)q(erator)f(precedence)j(declarations)f
Fk(\045left)e Fp(and)0 1626 y Fk(\045right)p Fp(.)k(Eac)o(h)13
b(suc)o(h)h(declaration)h(con)o(tains)e(a)h(list)g(of)g(tok)o(ens,)f
(whic)o(h)h(are)g(op)q(erators)f(whose)g(precedence)j(and)0
1688 y(asso)q(ciativit)o(y)j(is)h(b)q(eing)g(declared.)33
b(The)19 b Fk(\045left)g Fp(declaration)h(mak)o(es)e(all)i(those)f(op)q
(erators)f(left-asso)q(ciativ)o(e)0 1750 y(and)c(the)h
Fk(\045right)e Fp(declaration)i(mak)o(es)f(them)g(righ)o(t-asso)q
(ciativ)o(e.)20 b(A)14 b(third)h(alternativ)o(e)g(is)f
Fk(\045nonassoc)p Fp(,)f(whic)o(h)0 1813 y(declares)j(that)f(it)g(is)h
(a)f(syn)o(tax)f(error)h(to)f(\014nd)i(the)f(same)g(op)q(erator)g(t)o
(wice)g(\\in)h(a)f(ro)o(w".)62 1951 y(The)j(relativ)o(e)g(precedence)h
(of)d(di\013eren)o(t)i(op)q(erators)e(is)i(con)o(trolled)g(b)o(y)f(the)
h(order)f(in)h(whic)o(h)g(they)f(are)g(de-)0 2013 y(clared.)25
b(The)17 b(\014rst)f Fk(\045left)g Fp(or)g Fk(\045right)g
Fp(declaration)h(in)h(the)e(\014le)i(declares)f(the)g(op)q(erators)f
(whose)g(precedence)0 2075 y(is)g(lo)o(w)o(est,)f(the)g(next)h(suc)o(h)
f(declaration)i(declares)f(the)g(op)q(erators)e(whose)i(precedence)h
(is)f(a)f(little)i(higher,)f(and)0 2138 y(so)f(on.)0
2356 y Fj(5.3.3)30 b(Precedence)16 b(Examples)62 2494
y Fp(In)g(our)f(example,)h(w)o(e)f(w)o(ould)g(w)o(an)o(t)f(the)i(follo)
o(wing)f(declarations:)120 2620 y Fk(\045left)23 b('<')120
2670 y(\045left)g('-')p eop
%%Page: 70 72
70 71 bop 0 -58 a Fp(70)1697 b(Bison)16 b(1.20)120 183
y Fk(\045left)23 b('*')62 320 y Fp(In)16 b(a)e(more)g(complete)h
(example,)h(whic)o(h)f(supp)q(orts)g(other)f(op)q(erators)g(as)g(w)o
(ell,)h(w)o(e)g(w)o(ould)g(declare)h(them)e(in)0 383
y(groups)h(of)g(equal)h(precedence.)21 b(F)l(or)15 b(example,)g
Fk('+')g Fp(is)h(declared)g(with)g Fk('-')p Fp(:)120
507 y Fk(\045left)23 b('<')h('>')f('=')h(NE)f(LE)h(GE)120
557 y(\045left)f('+')h('-')120 607 y(\045left)f('*')h('/')0
744 y Fp(\(Here)13 b Fk(NE)g Fp(and)g(so)g(on)h(stand)f(for)f(the)h(op)
q(erators)g(for)f(\\not)h(equal")h(and)f(so)g(on.)19
b(W)l(e)13 b(assume)h(that)e(these)h(tok)o(ens)0 806
y(are)i(more)g(than)g(one)g(c)o(haracter)g(long)g(and)g(therefore)g
(are)g(represen)o(ted)h(b)o(y)f(names,)g(not)g(c)o(haracter)f
(literals.\))0 1014 y Fj(5.3.4)30 b(Ho)n(w)15 b(Precedence)h(W)-5
b(orks)62 1151 y Fp(The)21 b(\014rst)g(e\013ect)g(of)f(the)h
(precedence)i(declarations)e(is)h(to)e(assign)h(precedence)i(lev)o(els)
f(to)e(the)h(terminal)0 1213 y(sym)o(b)q(ols)c(declared.)26
b(The)16 b(second)i(e\013ect)e(is)h(to)f(assign)h(precedence)h(lev)o
(els)g(to)e(certain)i(rules:)23 b(eac)o(h)17 b(rule)g(gets)0
1275 y(its)f(precedence)h(from)e(the)h(last)f(terminal)h(sym)o(b)q(ol)g
(men)o(tioned)h(in)f(the)g(comp)q(onen)o(ts.)21 b(\(Y)l(ou)15
b(can)h(also)g(sp)q(ecify)0 1337 y(explicitly)i(the)d(precedence)i(of)e
(a)g(rule.)21 b(See)15 b(Section)h(5.4)f([Con)o(text-Dep)q(enden)o(t)g
(Precedence],)h(page)f(70.\))62 1474 y(Finally)l(,)e(the)d(resolution)i
(of)d(con\015icts)j(w)o(orks)d(b)o(y)h(comparing)h(the)f(precedence)i
(of)e(the)h(rule)g(b)q(eing)h(considered)0 1537 y(with)19
b(that)f(of)h(the)f(lo)q(ok-ahead)i(tok)o(en.)30 b(If)19
b(the)g(tok)o(en's)f(precedence)i(is)g(higher,)g(the)f(c)o(hoice)g(is)h
(to)e(shift.)31 b(If)0 1599 y(the)17 b(rule's)g(precedence)i(is)f
(higher,)g(the)f(c)o(hoice)h(is)f(to)f(reduce.)27 b(If)17
b(they)g(ha)o(v)o(e)f(equal)i(precedence,)h(the)e(c)o(hoice)0
1661 y(is)g(made)f(based)g(on)g(the)h(asso)q(ciativit)o(y)f(of)g(that)f
(precedence)j(lev)o(el.)24 b(The)16 b(v)o(erb)q(ose)h(output)f(\014le)h
(made)f(b)o(y)g(`)p Fk(-v)p Fp(')0 1723 y(\(see)f(Chapter)g(9)g([In)o
(v)o(oking)g(Bison],)g(page)g(87\))g(sa)o(ys)f(ho)o(w)h(eac)o(h)g
(con\015ict)h(w)o(as)f(resolv)o(ed.)62 1860 y(Not)g(all)h(rules)g(and)g
(not)f(all)h(tok)o(ens)f(ha)o(v)o(e)g(precedence.)22
b(If)15 b(either)h(the)g(rule)g(or)f(the)g(lo)q(ok-ahead)h(tok)o(en)f
(has)0 1923 y(no)g(precedence,)i(then)e(the)h(default)f(is)h(to)f
(shift.)0 2147 y Fo(5.4)33 b(Con)n(text-Dep)r(enden)n(t)15
b(Precedence)62 2284 y Fp(Often)j(the)f(precedence)j(of)c(an)i(op)q
(erator)e(dep)q(ends)j(on)e(the)h(con)o(text.)26 b(This)18
b(sounds)f(outlandish)i(at)e(\014rst,)0 2346 y(but)e(it)h(is)g(really)g
(v)o(ery)f(common.)k(F)l(or)c(example,)g(a)g(min)o(us)h(sign)g(t)o
(ypically)h(has)e(a)g(v)o(ery)f(high)i(precedence)h(as)e(a)0
2408 y(unary)e(op)q(erator,)f(and)g(a)h(somewhat)f(lo)o(w)o(er)g
(precedence)i(\(lo)o(w)o(er)e(than)h(m)o(ultiplication\))h(as)f(a)f
(binary)h(op)q(erator.)62 2545 y(The)18 b(Bison)g(precedence)h
(declarations,)f Fk(\045left)p Fp(,)f Fk(\045right)g
Fp(and)g Fk(\045nonassoc)p Fp(,)f(can)i(only)g(b)q(e)g(used)g(once)g
(for)0 2608 y(a)h(giv)o(en)h(tok)o(en;)g(so)f(a)g(tok)o(en)g(has)g
(only)h(one)f(precedence)i(declared)f(in)g(this)g(w)o(a)o(y)l(.)31
b(F)l(or)19 b(con)o(text-dep)q(enden)o(t)0 2670 y(precedence,)e(y)o(ou)
d(need)i(to)f(use)h(an)f(additional)h(mec)o(hanism:)21
b(the)15 b Fk(\045prec)g Fp(mo)q(di\014er)h(for)e(rules.)p
eop
%%Page: 71 73
71 72 bop 0 -58 a Fp(Chapter)15 b(5:)k(The)d(Bison)g(P)o(arser)e
(Algorithm)1109 b(71)62 183 y(The)14 b Fk(\045prec)f
Fp(mo)q(di\014er)h(declares)h(the)e(precedence)j(of)d(a)g(particular)h
(rule)g(b)o(y)g(sp)q(ecifying)h(a)e(terminal)i(sym)o(b)q(ol)0
246 y(whose)22 b(precedence)i(should)g(b)q(e)f(used)g(for)f(that)g
(rule.)42 b(It's)22 b(not)g(necessary)h(for)e(that)h(sym)o(b)q(ol)h(to)
f(app)q(ear)0 308 y(otherwise)15 b(in)h(the)g(rule.)k(The)c(mo)q
(di\014er's)g(syn)o(tax)e(is:)120 435 y Fk(\045prec)23
b Fl(terminal-sym)o(b)q(ol)0 575 y Fp(and)15 b(it)h(is)f(written)h
(after)e(the)h(comp)q(onen)o(ts)h(of)e(the)i(rule.)k(Its)15
b(e\013ect)g(is)h(to)f(assign)g(the)g(rule)h(the)f(precedence)i(of)0
637 y Fl(terminal-sym)o(b)q(ol)p Fp(,)f(o)o(v)o(erriding)f(the)g
(precedence)h(that)e(w)o(ould)i(b)q(e)f(deduced)h(for)e(it)h(in)h(the)f
(ordinary)g(w)o(a)o(y)l(.)k(The)0 699 y(altered)e(rule)g(precedence)i
(then)e(a\013ects)e(ho)o(w)h(con\015icts)i(in)o(v)o(olving)g(that)d
(rule)j(are)e(resolv)o(ed)h(\(see)f(Section)i(5.3)0 762
y([Op)q(erator)d(Precedence],)g(page)h(68\).)62 902 y(Here)d(is)h(ho)o
(w)e Fk(\045prec)g Fp(solv)o(es)h(the)g(problem)g(of)g(unary)f(min)o
(us.)20 b(First,)13 b(declare)g(a)g(precedence)h(for)f(a)f
(\014ctitious)0 964 y(terminal)k(sym)o(b)q(ol)g(named)g
Fk(UMINUS)p Fp(.)21 b(There)16 b(are)f(no)h(tok)o(ens)f(of)g(this)h(t)o
(yp)q(e,)g(but)g(the)g(sym)o(b)q(ol)g(serv)o(es)f(to)g(stand)0
1026 y(for)g(its)g(precedence:)120 1153 y Fh(:)8 b(:)g(:)120
1203 y Fk(\045left)23 b('+')h('-')120 1253 y(\045left)f('*')120
1303 y(\045left)g(UMINUS)62 1443 y Fp(No)o(w)15 b(the)g(precedence)i
(of)e Fk(UMINUS)f Fp(can)h(b)q(e)h(used)g(in)g(sp)q(eci\014c)h(rules:)
120 1578 y Fk(exp:)95 b Fh(:)8 b(:)g(:)311 1641 y Fk(|)24
b(exp)f('-')h(exp)311 1703 y Fh(:)8 b(:)g(:)311 1765
y Fk(|)24 b('-')f(exp)h(\045prec)f(UMINUS)0 2017 y Fo(5.5)33
b(P)n(arser)15 b(States)62 2157 y Fp(The)j(function)g
Fk(yyparse)e Fp(is)i(implemen)o(ted)h(using)f(a)e(\014nite-state)i(mac)
o(hine.)27 b(The)17 b(v)m(alues)h(pushed)h(on)e(the)0
2219 y(parser)g(stac)o(k)g(are)g(not)g(simply)h(tok)o(en)f(t)o(yp)q(e)h
(co)q(des;)g(they)g(represen)o(t)f(the)g(en)o(tire)h(sequence)h(of)e
(terminal)h(and)0 2281 y(non)o(terminal)d(sym)o(b)q(ols)g(at)f(or)h
(near)f(the)h(top)f(of)h(the)f(stac)o(k.)19 b(The)c(curren)o(t)g(state)
f(collects)h(all)h(the)f(information)0 2343 y(ab)q(out)g(previous)h
(input)g(whic)o(h)g(is)g(relev)m(an)o(t)g(to)e(deciding)k(what)c(to)h
(do)g(next.)62 2483 y(Eac)o(h)i(time)g(a)f(lo)q(ok-ahead)h(tok)o(en)f
(is)h(read,)f(the)h(curren)o(t)g(parser)f(state)f(together)h(with)h
(the)g(t)o(yp)q(e)f(of)h(lo)q(ok-)0 2545 y(ahead)g(tok)o(en)f(are)h(lo)
q(ok)o(ed)g(up)h(in)f(a)g(table.)25 b(This)17 b(table)h(en)o(try)e(can)
h(sa)o(y)l(,)g(\\Shift)g(the)g(lo)q(ok-ahead)g(tok)o(en.")24
b(In)0 2608 y(this)14 b(case,)f(it)g(also)g(sp)q(eci\014es)i(the)e(new)
g(parser)g(state,)f(whic)o(h)i(is)g(pushed)g(on)o(to)e(the)h(top)g(of)g
(the)g(parser)f(stac)o(k.)19 b(Or)0 2670 y(it)13 b(can)f(sa)o(y)l(,)h
(\\Reduce)h(using)f(rule)g(n)o(um)o(b)q(er)g Fl(n)p Fp(.")19
b(This)13 b(means)g(that)e(a)i(certain)g(n)o(um)o(b)q(er)g(of)f(tok)o
(ens)g(or)g(groupings)p eop
%%Page: 72 74
72 73 bop 0 -58 a Fp(72)1697 b(Bison)16 b(1.20)0 183
y(are)g(tak)o(en)g(o\013)g(the)h(top)f(of)g(the)g(stac)o(k,)g(and)h
(replaced)h(b)o(y)e(one)h(grouping.)24 b(In)17 b(other)f(w)o(ords,)g
(that)g(n)o(um)o(b)q(er)g(of)0 246 y(states)e(are)h(p)q(opp)q(ed)i
(from)d(the)i(stac)o(k,)e(and)h(one)g(new)h(state)e(is)i(pushed.)62
392 y(There)g(is)h(one)f(other)f(alternativ)o(e:)22 b(the)16
b(table)g(can)g(sa)o(y)g(that)f(the)h(lo)q(ok-ahead)g(tok)o(en)g(is)g
(erroneous)g(in)h(the)0 454 y(curren)o(t)e(state.)k(This)d(causes)f
(error)g(pro)q(cessing)h(to)e(b)q(egin)j(\(see)e(Chapter)g(6)g([Error)f
(Reco)o(v)o(ery],)g(page)h(77\).)0 760 y Fo(5.6)33 b(Reduce/Reduce)15
b(Con\015icts)62 906 y Fp(A)h(reduce/reduce)g(con\015ict)g(o)q(ccurs)g
(if)g(there)f(are)g(t)o(w)o(o)f(or)h(more)f(rules)i(that)f(apply)h(to)f
(the)g(same)g(sequence)0 968 y(of)g(input.)21 b(This)15
b(usually)i(indicates)g(a)e(serious)g(error)g(in)h(the)f(grammar.)62
1114 y(F)l(or)f(example,)h(here)f(is)h(an)f(erroneous)g(attempt)f(to)g
(de\014ne)j(a)d(sequence)j(of)d(zero)h(or)g(more)g Fk(word)f
Fp(groupings.)120 1248 y Fk(sequence:)23 b(/*)g(empty)g(*/)502
1298 y({)h(printf)f(\("empty)f(sequence\\n"\);)h(})311
1348 y(|)h(maybeword)311 1397 y(|)g(sequence)e(word)502
1447 y({)i(printf)f(\("added)f(word)i(\045s\\n",)f($2\);)g(})311
1497 y(;)120 1597 y(maybeword:)f(/*)i(empty)f(*/)502
1646 y({)h(printf)f(\("empty)f(maybeword\\n"\);)g(})311
1696 y(|)i(word)502 1746 y({)g(printf)f(\("single)f(word)i(\045s\\n",)f
($1\);)g(})311 1796 y(;)0 1942 y Fp(The)c(error)f(is)h(an)f(am)o
(biguit)o(y:)27 b(there)19 b(is)g(more)f(than)h(one)f(w)o(a)o(y)g(to)g
(parse)g(a)h(single)h Fk(word)e Fp(in)o(to)g(a)g Fk(sequence)p
Fp(.)0 2004 y(It)e(could)i(b)q(e)f(reduced)g(to)f(a)g
Fk(maybeword)f Fp(and)h(then)h(in)o(to)f(a)g Fk(sequence)f
Fp(via)i(the)f(second)h(rule.)24 b(Alternativ)o(ely)l(,)0
2067 y(nothing-at-all)15 b(could)f(b)q(e)h(reduced)f(in)o(to)g(a)f
Fk(sequence)f Fp(via)i(the)g(\014rst)f(rule,)h(and)g(this)g(could)h(b)q
(e)f(com)o(bined)h(with)0 2129 y(the)g Fk(word)g Fp(using)h(the)f
(third)h(rule)g(for)e Fk(sequence)p Fp(.)62 2275 y(There)k(is)g(also)g
(more)f(than)g(one)h(w)o(a)o(y)f(to)g(reduce)h(nothing-at-all)h(in)o
(to)e(a)h Fk(sequence)p Fp(.)25 b(This)19 b(can)e(b)q(e)i(done)0
2337 y(directly)e(via)e(the)g(\014rst)g(rule,)h(or)e(indirectly)k(via)d
Fk(maybeword)f Fp(and)i(then)f(the)g(second)h(rule.)62
2483 y(Y)l(ou)22 b(migh)o(t)f(think)h(that)f(this)g(is)h(a)f
(distinction)i(without)f(a)f(di\013erence,)i(b)q(ecause)g(it)e(do)q(es)
h(not)f(c)o(hange)0 2545 y(whether)15 b(an)o(y)f(particular)h(input)g
(is)g(v)m(alid)h(or)e(not.)19 b(But)14 b(it)h(do)q(es)f(a\013ect)g
(whic)o(h)h(actions)g(are)f(run.)20 b(One)15 b(parsing)0
2608 y(order)e(runs)h(the)f(second)h(rule's)g(action;)g(the)f(other)g
(runs)h(the)f(\014rst)g(rule's)h(action)f(and)h(the)f(third)h(rule's)g
(action.)0 2670 y(In)i(this)f(example,)h(the)f(output)g(of)g(the)g
(program)g(c)o(hanges.)p eop
%%Page: 73 75
73 74 bop 0 -58 a Fp(Chapter)15 b(5:)k(The)d(Bison)g(P)o(arser)e
(Algorithm)1109 b(73)62 183 y(Bison)21 b(resolv)o(es)f(a)g
(reduce/reduce)i(con\015ict)f(b)o(y)f(c)o(ho)q(osing)g(to)g(use)g(the)h
(rule)g(that)e(app)q(ears)h(\014rst)g(in)h(the)0 246
y(grammar,)c(but)h(it)g(is)g(v)o(ery)g(risky)g(to)f(rely)i(on)f(this.)
28 b(Ev)o(ery)18 b(reduce/reduce)h(con\015ict)g(m)o(ust)e(b)q(e)i
(studied)g(and)0 308 y(usually)e(eliminated.)k(Here)16
b(is)g(the)f(prop)q(er)g(w)o(a)o(y)g(to)f(de\014ne)i
Fk(sequence)p Fp(:)120 452 y Fk(sequence:)23 b(/*)g(empty)g(*/)502
502 y({)h(printf)f(\("empty)f(sequence\\n"\);)h(})311
552 y(|)h(sequence)e(word)502 601 y({)i(printf)f(\("added)f(word)i
(\045s\\n",)f($2\);)g(})311 651 y(;)62 808 y Fp(Here)16
b(is)f(another)g(common)g(error)g(that)f(yields)j(a)e(reduce/reduce)h
(con\015ict:)120 952 y Fk(sequence:)23 b(/*)g(empty)g(*/)311
1002 y(|)h(sequence)e(words)311 1052 y(|)i(sequence)e(redirects)311
1102 y(;)120 1201 y(words:)95 b(/*)23 b(empty)g(*/)311
1251 y(|)h(words)f(word)311 1301 y(;)120 1401 y(redirects:/*)f(empty)h
(*/)311 1450 y(|)h(redirects)e(redirect)311 1500 y(;)0
1657 y Fp(The)17 b(in)o(ten)o(tion)h(here)f(is)h(to)e(de\014ne)i(a)f
(sequence)h(whic)o(h)g(can)f(con)o(tain)h(either)f Fk(word)g
Fp(or)f Fk(redirect)g Fp(groupings.)0 1719 y(The)d(individual)j
(de\014nitions)f(of)d Fk(sequence)p Fp(,)g Fk(words)g
Fp(and)h Fk(redirects)f Fp(are)g(error-free,)h(but)g(the)g(three)g
(together)0 1782 y(mak)o(e)i(a)g(subtle)h(am)o(biguit)o(y:)k(ev)o(en)15
b(an)g(empt)o(y)g(input)h(can)g(b)q(e)g(parsed)f(in)h(in\014nitely)i
(man)o(y)c(w)o(a)o(ys!)62 1938 y(Consider:)21 b(nothing-at-all)16
b(could)h(b)q(e)f(a)f Fk(words)p Fp(.)k(Or)d(it)f(could)i(b)q(e)f(t)o
(w)o(o)e Fk(words)g Fp(in)j(a)e(ro)o(w,)f(or)g(three,)h(or)g(an)o(y)0
2001 y(n)o(um)o(b)q(er.)30 b(It)18 b(could)i(equally)g(w)o(ell)f(b)q(e)
g(a)f Fk(redirects)p Fp(,)g(or)g(t)o(w)o(o,)f(or)h(an)o(y)g(n)o(um)o(b)
q(er.)30 b(Or)18 b(it)h(could)h(b)q(e)f(a)f Fk(words)0
2063 y Fp(follo)o(w)o(ed)e(b)o(y)f(three)g Fk(redirects)f
Fp(and)h(another)g Fk(words)p Fp(.)k(And)d(so)f(on.)62
2220 y(Here)h(are)f(t)o(w)o(o)e(w)o(a)o(ys)i(to)f(correct)h(these)g
(rules.)21 b(First,)14 b(to)h(mak)o(e)g(it)g(a)g(single)i(lev)o(el)f
(of)f(sequence:)120 2364 y Fk(sequence:)23 b(/*)g(empty)g(*/)311
2414 y(|)h(sequence)e(word)311 2463 y(|)i(sequence)e(redirect)311
2513 y(;)62 2670 y Fp(Second,)16 b(to)e(prev)o(en)o(t)h(either)h(a)f
Fk(words)g Fp(or)f(a)h Fk(redirects)f Fp(from)h(b)q(eing)h(empt)o(y:)p
eop
%%Page: 74 76
74 75 bop 0 -58 a Fp(74)1697 b(Bison)16 b(1.20)120 183
y Fk(sequence:)23 b(/*)g(empty)g(*/)311 233 y(|)h(sequence)e(words)311
283 y(|)i(sequence)e(redirects)311 333 y(;)120 432 y(words:)95
b(word)311 482 y(|)24 b(words)f(word)311 532 y(;)120
632 y(redirects:redirect)311 681 y(|)h(redirects)e(redirect)311
731 y(;)0 1102 y Fo(5.7)33 b(Mysterious)15 b(Reduce/Reduce)g
(Con\015icts)62 1256 y Fp(Sometimes)h(reduce/reduce)g(con\015icts)h
(can)e(o)q(ccur)g(that)g(don't)g(lo)q(ok)g(w)o(arran)o(ted.)k(Here)c
(is)h(an)f(example:)120 1408 y Fk(\045token)23 b(ID)120
1532 y(\045\045)120 1594 y(def:)95 b(param_spec)22 b(return_spec)h(',')
311 1657 y(;)120 1719 y(param_spec:)430 1781 y(type)311
1843 y(|)95 b(name_list)23 b(':')g(type)311 1906 y(;)120
1973 y(return_spec:)430 2035 y(type)311 2098 y(|)95 b(name)24
b(':')f(type)311 2160 y(;)120 2227 y(type:)190 b(ID)311
2290 y(;)120 2357 y(name:)g(ID)311 2419 y(;)120 2482
y(name_list:)430 2544 y(name)311 2606 y(|)95 b(name)24
b(',')f(name_list)311 2668 y(;)p eop
%%Page: 75 77
75 76 bop 0 -58 a Fp(Chapter)15 b(5:)k(The)d(Bison)g(P)o(arser)e
(Algorithm)1109 b(75)62 183 y(It)17 b(w)o(ould)g(seem)h(that)e(this)h
(grammar)f(can)h(b)q(e)g(parsed)g(with)g(only)h(a)e(single)j(tok)o(en)d
(of)h(lo)q(ok-ahead:)23 b(when)0 246 y(a)16 b Fk(param_spec)f
Fp(is)i(b)q(eing)g(read,)f(an)h Fk(ID)f Fp(is)g(a)g Fk(name)g
Fp(if)h(a)f(comma)f(or)h(colon)h(follo)o(ws,)f(or)g(a)g
Fk(type)g Fp(if)g(another)g Fk(ID)0 308 y Fp(follo)o(ws.)k(In)c(other)f
(w)o(ords,)f(this)h(grammar)f(is)i(LR\(1\).)62 454 y(Ho)o(w)o(ev)o(er,)
i(Bison,)i(lik)o(e)g(most)e(parser)g(generators,)g(cannot)g(actually)i
(handle)g(all)f(LR\(1\))g(grammars.)28 b(In)0 516 y(this)19
b(grammar,)g(t)o(w)o(o)e(con)o(texts,)i(that)f(after)h(an)g
Fk(ID)f Fp(at)h(the)g(b)q(eginning)i(of)d(a)h Fk(param_spec)f
Fp(and)h(lik)o(ewise)i(at)0 579 y(the)16 b(b)q(eginning)i(of)d(a)h
Fk(return_spec)p Fp(,)e(are)i(similar)h(enough)f(that)f(Bison)i
(assumes)f(they)g(are)f(the)h(same.)22 b(They)0 641 y(app)q(ear)15
b(similar)i(b)q(ecause)f(the)g(same)f(set)g(of)f(rules)j(w)o(ould)e(b)q
(e)h(activ)o(e|the)g(rule)g(for)f(reducing)h(to)f(a)g
Fk(name)g Fp(and)0 703 y(that)e(for)h(reducing)h(to)e(a)h
Fk(type)p Fp(.)k(Bison)d(is)g(unable)g(to)e(determine)i(at)e(that)h
(stage)f(of)g(pro)q(cessing)i(that)e(the)h(rules)0 765
y(w)o(ould)20 b(require)h(di\013eren)o(t)f(lo)q(ok-ahead)g(tok)o(ens)f
(in)i(the)e(t)o(w)o(o)g(con)o(texts,)h(so)f(it)h(mak)o(es)f(a)g(single)
i(parser)f(state)0 828 y(for)f(them)g(b)q(oth.)33 b(Com)o(bining)20
b(the)g(t)o(w)o(o)e(con)o(texts)g(causes)i(a)f(con\015ict)h(later.)33
b(In)20 b(parser)f(terminology)l(,)i(this)0 890 y(o)q(ccurrence)16
b(means)f(that)g(the)g(grammar)f(is)i(not)e(LALR\(1\).)62
1036 y(In)i(general,)f(it)g(is)g(b)q(etter)f(to)h(\014x)f
(de\014ciencies)k(than)d(to)f(do)q(cumen)o(t)h(them.)20
b(But)14 b(this)h(particular)h(de\014ciency)0 1099 y(is)j(in)o
(trinsically)h(hard)f(to)e(\014x;)j(parser)d(generators)h(that)f(can)h
(handle)i(LR\(1\))e(grammars)e(are)i(hard)g(to)g(write)0
1161 y(and)d(tend)h(to)e(pro)q(duce)j(parsers)d(that)h(are)g(v)o(ery)g
(large.)20 b(In)15 b(practice,)h(Bison)g(is)f(more)g(useful)h(as)f(it)h
(is)f(no)o(w.)62 1307 y(When)f(the)f(problem)h(arises,)g(y)o(ou)f(can)g
(often)g(\014x)h(it)f(b)o(y)g(iden)o(tifying)i(the)f(t)o(w)o(o)e
(parser)h(states)f(that)h(are)g(b)q(eing)0 1369 y(confused,)20
b(and)e(adding)i(something)e(to)g(mak)o(e)g(them)g(lo)q(ok)h(distinct.)
31 b(In)19 b(the)g(ab)q(o)o(v)o(e)f(example,)i(adding)f(one)0
1432 y(rule)d(to)f Fk(return_spec)e Fp(as)i(follo)o(ws)g(mak)o(es)g
(the)g(problem)h(go)f(a)o(w)o(a)o(y:)120 1575 y Fk(\045token)23
b(BOGUS)120 1637 y Fh(:)8 b(:)g(:)120 1700 y Fk(\045\045)120
1762 y Fh(:)g(:)g(:)120 1824 y Fk(return_spec:)430 1887
y(type)311 1949 y(|)95 b(name)24 b(':')f(type)311 2011
y(/*)g(This)h(rule)f(is)h(never)f(used.)47 b(*/)311 2073
y(|)95 b(ID)24 b(BOGUS)311 2136 y(;)62 2275 y Fp(This)14
b(corrects)e(the)h(problem)g(b)q(ecause)h(it)f(in)o(tro)q(duces)g(the)g
(p)q(ossibilit)o(y)i(of)d(an)h(additional)h(activ)o(e)f(rule)g(in)h
(the)0 2337 y(con)o(text)g(after)g(the)g Fk(ID)g Fp(at)g(the)h(b)q
(eginning)i(of)d Fk(return_spec)p Fp(.)k(This)d(rule)g(is)g(not)f
(activ)o(e)h(in)g(the)g(corresp)q(onding)0 2399 y(con)o(text)h(in)h(a)g
Fk(param_spec)p Fp(,)e(so)h(the)h(t)o(w)o(o)e(con)o(texts)h(receiv)o(e)
i(distinct)f(parser)g(states.)23 b(As)17 b(long)f(as)h(the)f(tok)o(en)0
2461 y Fk(BOGUS)e Fp(is)i(nev)o(er)g(generated)f(b)o(y)g
Fk(yylex)p Fp(,)f(the)h(added)h(rule)g(cannot)f(alter)g(the)h(w)o(a)o
(y)e(actual)h(input)h(is)g(parsed.)62 2608 y(In)22 b(this)g(particular)
h(example,)g(there)f(is)g(another)f(w)o(a)o(y)f(to)h(solv)o(e)h(the)g
(problem:)33 b(rewrite)22 b(the)f(rule)i(for)0 2670 y
Fk(return_spec)12 b Fp(to)h(use)i Fk(ID)e Fp(directly)i(instead)g(of)e
(via)h Fk(name)p Fp(.)19 b(This)c(also)e(causes)h(the)g(t)o(w)o(o)f
(confusing)h(con)o(texts)g(to)p eop
%%Page: 76 78
76 77 bop 0 -58 a Fp(76)1697 b(Bison)16 b(1.20)0 183
y(ha)o(v)o(e)h(di\013eren)o(t)g(sets)g(of)g(activ)o(e)g(rules,)i(b)q
(ecause)f(the)f(one)h(for)e Fk(return_spec)g Fp(activ)m(ates)h(the)h
(altered)f(rule)i(for)0 246 y Fk(return_spec)14 b Fp(rather)g(than)h
(the)h(one)f(for)g Fk(name)p Fp(.)120 370 y Fk(param_spec:)430
420 y(type)311 470 y(|)95 b(name_list)23 b(':')g(type)311
519 y(;)120 569 y(return_spec:)430 619 y(type)311 669
y(|)95 b(ID)24 b(':')f(type)311 719 y(;)0 943 y Fo(5.8)33
b(Stac)n(k)15 b(Ov)n(er\015o)n(w,)g(and)h(Ho)n(w)e(to)h(Av)n(oid)h(It)
62 1080 y Fp(The)f(Bison)f(parser)g(stac)o(k)f(can)h(o)o(v)o(er\015o)o
(w)f(if)i(to)q(o)e(man)o(y)h(tok)o(ens)f(are)h(shifted)h(and)f(not)f
(reduced.)21 b(When)15 b(this)0 1142 y(happ)q(ens,)21
b(the)f(parser)f(function)h Fk(yyparse)e Fp(returns)i(a)f(nonzero)g(v)m
(alue,)j(pausing)e(only)g(to)f(call)h Fk(yyerror)f Fp(to)0
1204 y(rep)q(ort)c(the)g(o)o(v)o(er\015o)o(w.)62 1341
y(By)21 b(de\014ning)h(the)f(macro)f Fk(YYMAXDEPTH)p
Fp(,)g(y)o(ou)h(can)f(con)o(trol)h(ho)o(w)f(deep)h(the)g(parser)g(stac)
o(k)e(can)i(b)q(ecome)0 1404 y(b)q(efore)16 b(a)f(stac)o(k)f(o)o(v)o
(er\015o)o(w)g(o)q(ccurs.)21 b(De\014ne)16 b(the)g(macro)e(with)i(a)f
(v)m(alue)i(that)d(is)i(an)g(in)o(teger.)k(This)c(v)m(alue)h(is)f(the)0
1466 y(maxim)o(um)h(n)o(um)o(b)q(er)h(of)e(tok)o(ens)h(that)g(can)g(b)q
(e)h(shifted)g(\(and)f(not)g(reduced\))h(b)q(efore)f(o)o(v)o(er\015o)o
(w.)25 b(It)17 b(m)o(ust)f(b)q(e)i(a)0 1528 y(constan)o(t)c(expression)
i(whose)f(v)m(alue)i(is)f(kno)o(wn)f(at)f(compile)j(time.)62
1665 y(The)c(stac)o(k)f(space)h(allo)o(w)o(ed)f(is)i(not)e(necessarily)
i(allo)q(cated.)20 b(If)12 b(y)o(ou)h(sp)q(ecify)g(a)g(large)f(v)m
(alue)i(for)e Fk(YYMAXDEPTH)p Fp(,)0 1727 y(the)17 b(parser)f(actually)
i(allo)q(cates)f(a)g(small)h(stac)o(k)e(at)g(\014rst,)g(and)h(then)g
(mak)o(es)g(it)g(bigger)g(b)o(y)g(stages)f(as)g(needed.)0
1790 y(This)f(increasing)g(allo)q(cation)h(happ)q(ens)f(automatically)f
(and)h(silen)o(tly)l(.)21 b(Therefore,)14 b(y)o(ou)g(do)g(not)g(need)h
(to)e(mak)o(e)0 1852 y Fk(YYMAXDEPTH)g Fp(painfully)k(small)e(merely)g
(to)f(sa)o(v)o(e)g(space)h(for)f(ordinary)g(inputs)i(that)e(do)g(not)g
(need)i(m)o(uc)o(h)e(stac)o(k.)62 1989 y(The)i(default)f(v)m(alue)i(of)
e Fk(YYMAXDEPTH)p Fp(,)e(if)j(y)o(ou)f(do)g(not)g(de\014ne)h(it,)f(is)h
(10000.)62 2126 y(Y)l(ou)f(can)f(con)o(trol)g(ho)o(w)f(m)o(uc)o(h)h
(stac)o(k)g(is)g(allo)q(cated)h(initially)i(b)o(y)d(de\014ning)i(the)e
(macro)f Fk(YYINITDEPTH)p Fp(.)18 b(This)0 2188 y(v)m(alue)e(to)q(o)f
(m)o(ust)g(b)q(e)g(a)g(compile-time)j(constan)o(t)c(in)o(teger.)20
b(The)15 b(default)h(is)g(200.)p eop
%%Page: 77 79
77 78 bop 0 -58 a Fp(Chapter)15 b(6:)k(Error)c(Reco)o(v)o(ery)1370
b(77)0 183 y Fm(6)41 b(Error)15 b(Reco)n(v)n(ery)62 405
y Fp(It)21 b(is)g(not)g(usually)h(acceptable)g(to)e(ha)o(v)o(e)g(a)h
(program)f(terminate)g(on)h(a)g(parse)f(error.)36 b(F)l(or)21
b(example,)h(a)0 467 y(compiler)f(should)g(reco)o(v)o(er)e(su\016cien)o
(tly)i(to)f(parse)f(the)h(rest)g(of)f(the)h(input)h(\014le)g(and)f(c)o
(hec)o(k)g(it)g(for)f(errors;)i(a)0 529 y(calculator)16
b(should)g(accept)f(another)g(expression.)62 673 y(In)20
b(a)f(simple)h(in)o(teractiv)o(e)g(command)f(parser)g(where)g(eac)o(h)h
(input)g(is)f(one)h(line,)h(it)e(ma)o(y)g(b)q(e)h(su\016cien)o(t)g(to)0
735 y(allo)o(w)c Fk(yyparse)e Fp(to)h(return)h(1)f(on)h(error)f(and)g
(ha)o(v)o(e)h(the)f(caller)i(ignore)f(the)g(rest)f(of)g(the)h(input)g
(line)i(when)e(that)0 798 y(happ)q(ens)e(\(and)f(then)h(call)g
Fk(yyparse)f Fp(again\).)18 b(But)c(this)f(is)h(inadequate)g(for)f(a)g
(compiler,)h(b)q(ecause)g(it)g(forgets)e(all)0 860 y(the)h(syn)o
(tactic)g(con)o(text)f(leading)i(up)g(to)e(the)h(error.)18
b(A)13 b(syn)o(tax)g(error)f(deep)i(within)g(a)e(function)i(in)g(the)f
(compiler)0 922 y(input)j(should)g(not)f(cause)h(the)f(compiler)h(to)f
(treat)f(the)i(follo)o(wing)f(line)i(lik)o(e)g(the)e(b)q(eginning)i(of)
e(a)g(source)g(\014le.)62 1066 y(Y)l(ou)e(can)g(de\014ne)g(ho)o(w)g(to)
e(reco)o(v)o(er)h(from)g(a)g(syn)o(tax)g(error)g(b)o(y)h(writing)g
(rules)g(to)f(recognize)h(the)g(sp)q(ecial)h(tok)o(en)0
1128 y Fk(error)p Fp(.)19 b(This)d(is)f(a)g(terminal)h(sym)o(b)q(ol)g
(that)e(is)i(alw)o(a)o(ys)e(de\014ned)j(\(y)o(ou)d(need)i(not)f
(declare)h(it\))f(and)g(reserv)o(ed)h(for)0 1191 y(error)h(handling.)30
b(The)18 b(Bison)h(parser)e(generates)h(an)g Fk(error)f
Fp(tok)o(en)g(whenev)o(er)i(a)e(syn)o(tax)g(error)h(happ)q(ens;)h(if)0
1253 y(y)o(ou)c(ha)o(v)o(e)g(pro)o(vided)h(a)f(rule)h(to)e(recognize)i
(this)g(tok)o(en)f(in)h(the)f(curren)o(t)g(con)o(text,)f(the)i(parse)f
(can)g(con)o(tin)o(ue.)62 1397 y(F)l(or)g(example:)120
1528 y Fk(stmnts:)47 b(/*)23 b(empty)h(string)f(*/)311
1578 y(|)h(stmnts)f('\\n')311 1628 y(|)h(stmnts)f(exp)g('\\n')311
1678 y(|)h(stmnts)f(error)g('\\n')62 1822 y Fp(The)15
b(fourth)f(rule)h(in)g(this)g(example)h(sa)o(ys)d(that)h(an)g(error)g
(follo)o(w)o(ed)h(b)o(y)f(a)g(newline)j(mak)o(es)d(a)g(v)m(alid)i
(addition)0 1884 y(to)f(an)o(y)f Fk(stmnts)p Fp(.)62
2028 y(What)22 b(happ)q(ens)h(if)f(a)g(syn)o(tax)f(error)h(o)q(ccurs)g
(in)h(the)f(middle)i(of)e(an)g Fk(exp)p Fp(?)40 b(The)23
b(error)e(reco)o(v)o(ery)g(rule,)0 2090 y(in)o(terpreted)13
b(strictly)l(,)h(applies)g(to)d(the)i(precise)h(sequence)f(of)f(a)h
Fk(stmnts)p Fp(,)e(an)i Fk(error)f Fp(and)g(a)h(newline.)20
b(If)13 b(an)g(error)0 2152 y(o)q(ccurs)j(in)h(the)f(middle)h(of)f(an)g
Fk(exp)p Fp(,)f(there)h(will)h(probably)g(b)q(e)f(some)g(additional)h
(tok)o(ens)e(and)h(sub)q(expressions)0 2215 y(on)e(the)f(stac)o(k)g
(after)g(the)h(last)g Fk(stmnts)p Fp(,)f(and)h(there)f(will)j(b)q(e)e
(tok)o(ens)f(to)h(read)f(b)q(efore)h(the)g(next)g(newline.)21
b(So)14 b(the)0 2277 y(rule)i(is)g(not)f(applicable)i(in)f(the)g
(ordinary)f(w)o(a)o(y)l(.)62 2421 y(But)20 b(Bison)g(can)g(force)f(the)
h(situation)g(to)f(\014t)g(the)h(rule,)h(b)o(y)e(discarding)i(part)e
(of)g(the)h(seman)o(tic)g(con)o(text)0 2483 y(and)e(part)f(of)h(the)g
(input.)29 b(First)17 b(it)i(discards)f(states)f(and)h(ob)s(jects)f
(from)h(the)g(stac)o(k)f(un)o(til)i(it)f(gets)f(bac)o(k)h(to)f(a)0
2545 y(state)d(in)i(whic)o(h)g(the)g Fk(error)e Fp(tok)o(en)h(is)h
(acceptable.)k(\(This)c(means)f(that)f(the)i(sub)q(expressions)g
(already)g(parsed)0 2608 y(are)h(discarded,)j(bac)o(k)d(to)h(the)f
(last)h(complete)h Fk(stmnts)p Fp(.\))26 b(A)o(t)17 b(this)i(p)q(oin)o
(t)f(the)g Fk(error)f Fp(tok)o(en)g(can)h(b)q(e)h(shifted.)0
2670 y(Then,)c(if)g(the)g(old)g(lo)q(ok-ahead)g(tok)o(en)g(is)g(not)f
(acceptable)i(to)e(b)q(e)h(shifted)h(next,)e(the)h(parser)f(reads)h
(tok)o(ens)f(and)p eop
%%Page: 78 80
78 79 bop 0 -58 a Fp(78)1697 b(Bison)16 b(1.20)0 183
y(discards)f(them)g(un)o(til)h(it)e(\014nds)i(a)e(tok)o(en)g(whic)o(h)i
(is)f(acceptable.)20 b(In)c(this)f(example,)g(Bison)g(reads)f(and)h
(discards)0 246 y(input)h(un)o(til)h(the)e(next)g(newline)i(so)e(that)g
(the)g(fourth)g(rule)h(can)f(apply)l(.)62 404 y(The)j(c)o(hoice)g(of)f
(error)f(rules)i(in)g(the)f(grammar)f(is)i(a)e(c)o(hoice)i(of)f
(strategies)g(for)f(error)h(reco)o(v)o(ery)l(.)25 b(A)17
b(simple)0 466 y(and)g(useful)i(strategy)d(is)h(simply)i(to)e(skip)h
(the)f(rest)g(of)g(the)g(curren)o(t)g(input)h(line)h(or)e(curren)o(t)g
(statemen)o(t)f(if)i(an)0 529 y(error)c(is)i(detected:)120
675 y Fk(stmnt:)23 b(error)g(';')48 b(/*)23 b(on)h(error,)f(skip)g
(until)g(';')h(is)f(read)h(*/)62 834 y Fp(It)e(is)f(also)h(useful)g(to)
f(reco)o(v)o(er)f(to)h(the)g(matc)o(hing)h(close-delimiter)i(of)d(an)g
(op)q(ening-delimi)q(ter)j(that)c(has)0 896 y(already)g(b)q(een)h
(parsed.)33 b(Otherwise)20 b(the)g(close-delimiter)i(will)f(probably)f
(app)q(ear)g(to)f(b)q(e)h(unmatc)o(hed,)h(and)0 958 y(generate)15
b(another,)f(spurious)i(error)f(message:)120 1104 y Fk(primary:)47
b('\(')23 b(expr)g('\)')311 1154 y(|)h('\(')f(error)g('\)')311
1204 y Fh(:)8 b(:)g(:)311 1254 y Fk(;)62 1413 y Fp(Error)j(reco)o(v)o
(ery)h(strategies)f(are)h(necessarily)i(guesses.)19 b(When)12
b(they)g(guess)h(wrong,)e(one)h(syn)o(tax)g(error)f(often)0
1475 y(leads)k(to)f(another.)20 b(In)15 b(the)g(ab)q(o)o(v)o(e)f
(example,)h(the)g(error)f(reco)o(v)o(ery)g(rule)h(guesses)g(that)f(an)g
(error)g(is)h(due)h(to)e(bad)0 1537 y(input)j(within)h(one)e
Fk(stmnt)p Fp(.)23 b(Supp)q(ose)17 b(that)f(instead)h(a)f(spurious)h
(semicolon)h(is)e(inserted)i(in)f(the)f(middle)i(of)e(a)0
1599 y(v)m(alid)j Fk(stmnt)p Fp(.)26 b(After)17 b(the)g(error)g(reco)o
(v)o(ery)f(rule)j(reco)o(v)o(ers)d(from)h(the)g(\014rst)g(error,)g
(another)g(syn)o(tax)g(error)f(will)0 1662 y(b)q(e)g(found)f(straigh)o
(ta)o(w)o(a)o(y)l(,)e(since)j(the)g(text)e(follo)o(wing)i(the)g
(spurious)f(semicolon)i(is)f(also)f(an)g(in)o(v)m(alid)i
Fk(stmnt)p Fp(.)62 1820 y(T)l(o)c(prev)o(en)o(t)g(an)h(outp)q(ouring)f
(of)g(error)g(messages,)g(the)g(parser)g(will)i(output)e(no)g(error)g
(message)g(for)f(another)0 1883 y(syn)o(tax)18 b(error)h(that)f(happ)q
(ens)i(shortly)f(after)f(the)h(\014rst;)h(only)g(after)e(three)h
(consecutiv)o(e)h(input)g(tok)o(ens)e(ha)o(v)o(e)0 1945
y(b)q(een)e(successfully)i(shifted)d(will)i(error)e(messages)g(resume.)
62 2104 y(Note)g(that)g(rules)h(whic)o(h)g(accept)f(the)g
Fk(error)g Fp(tok)o(en)g(ma)o(y)f(ha)o(v)o(e)h(actions,)g(just)g(as)f
(an)o(y)h(other)g(rules)h(can.)62 2262 y(Y)l(ou)f(can)g(mak)o(e)g
(error)f(messages)g(resume)h(immediately)i(b)o(y)e(using)g(the)g(macro)
f Fk(yyerrok)g Fp(in)i(an)f(action.)20 b(If)0 2325 y(y)o(ou)14
b(do)f(this)i(in)f(the)g(error)g(rule's)g(action,)g(no)g(error)f
(messages)g(will)j(b)q(e)e(suppressed.)21 b(This)14 b(macro)f(requires)
i(no)0 2387 y(argumen)o(ts;)f(`)p Fk(yyerrok;)p Fp(')f(is)j(a)f(v)m
(alid)i(C)e(statemen)o(t.)62 2545 y(The)f(previous)g(lo)q(ok-ahead)g
(tok)o(en)f(is)i(reanalyzed)f(immediately)h(after)e(an)g(error.)19
b(If)14 b(this)g(is)g(unacceptable,)0 2608 y(then)i(the)g(macro)f
Fk(yyclearin)g Fp(ma)o(y)g(b)q(e)h(used)h(to)e(clear)h(this)h(tok)o
(en.)k(W)l(rite)16 b(the)g(statemen)o(t)e(`)p Fk(yyclearin;)p
Fp(')g(in)0 2670 y(the)h(error)g(rule's)g(action.)p eop
%%Page: 79 81
79 80 bop 0 -58 a Fp(Chapter)15 b(6:)k(Error)c(Reco)o(v)o(ery)1370
b(79)62 183 y(F)l(or)12 b(example,)h(supp)q(ose)h(that)d(on)i(a)f
(parse)g(error,)g(an)g(error)g(handling)i(routine)f(is)g(called)h(that)
e(adv)m(ances)h(the)0 246 y(input)h(stream)f(to)f(some)h(p)q(oin)o(t)h
(where)f(parsing)h(should)g(once)f(again)h(commence.)19
b(The)14 b(next)f(sym)o(b)q(ol)h(returned)0 308 y(b)o(y)j(the)h
(lexical)i(scanner)e(is)g(probably)g(correct.)26 b(The)18
b(previous)g(lo)q(ok-ahead)h(tok)o(en)e(ough)o(t)g(to)g(b)q(e)h
(discarded)0 370 y(with)e(`)p Fk(yyclearin;)p Fp('.)62
507 y(The)21 b(macro)g Fk(YYRECOVERING)e Fp(stands)h(for)h(an)f
(expression)i(that)e(has)h(the)g(v)m(alue)h(1)f(when)g(the)g(parser)f
(is)0 569 y(reco)o(v)o(ering)i(from)f(a)g(syn)o(tax)g(error,)i(and)f(0)
f(the)h(rest)f(of)h(the)g(time.)40 b(A)21 b(v)m(alue)i(of)f(1)f
(indicates)j(that)d(error)0 632 y(messages)15 b(are)g(curren)o(tly)g
(suppressed)h(for)f(new)g(syn)o(tax)g(errors.)p eop
%%Page: 80 82
80 81 bop 0 -58 a Fp(80)1697 b(Bison)16 b(1.20)p eop
%%Page: 81 83
81 82 bop 0 -58 a Fp(Chapter)15 b(7:)k(Handling)e(Con)o(text)d(Dep)q
(endencies)1037 b(81)0 183 y Fm(7)41 b(Handling)14 b(Con)n(text)h(Dep)r
(endencies)62 378 y Fp(The)k(Bison)h(paradigm)f(is)g(to)f(parse)h(tok)o
(ens)f(\014rst,)h(then)g(group)g(them)g(in)o(to)f(larger)h(syn)o
(tactic)g(units.)31 b(In)0 440 y(man)o(y)13 b(languages,)g(the)g
(meaning)h(of)f(a)g(tok)o(en)f(is)i(a\013ected)f(b)o(y)g(its)g(con)o
(text.)19 b(Although)14 b(this)f(violates)h(the)f(Bison)0
502 y(paradigm,)k(certain)g(tec)o(hniques)i(\(kno)o(wn)d(as)h
Fl(kludges)r Fp(\))g(ma)o(y)g(enable)h(y)o(ou)e(to)h(write)g(Bison)h
(parsers)e(for)h(suc)o(h)0 564 y(languages.)62 703 y(\(Actually)l(,)e
(\\kludge")f(means)g(an)o(y)f(tec)o(hnique)i(that)e(gets)h(its)f(job)h
(done)g(but)g(is)g(neither)h(clean)g(nor)e(robust.\))0
941 y Fo(7.1)33 b(Seman)n(tic)16 b(Info)e(in)j(T)-6 b(ok)n(en)15
b(T)n(yp)r(es)62 1079 y Fp(The)j(C)f(language)h(has)f(a)g(con)o(text)g
(dep)q(endency:)26 b(the)17 b(w)o(a)o(y)g(an)g(iden)o(ti\014er)i(is)f
(used)g(dep)q(ends)h(on)e(what)g(its)0 1142 y(curren)o(t)e(meaning)h
(is.)k(F)l(or)15 b(example,)h(consider)g(this:)120 1268
y Fk(foo)23 b(\(x\);)62 1406 y Fp(This)18 b(lo)q(oks)f(lik)o(e)i(a)e
(function)h(call)g(statemen)o(t,)e(but)i(if)f Fk(foo)g
Fp(is)h(a)f(t)o(yp)q(edef)g(name,)g(then)h(this)g(is)f(actually)h(a)0
1468 y(declaration)e(of)f Fk(x)p Fp(.)k(Ho)o(w)c(can)g(a)g(Bison)h
(parser)f(for)g(C)f(decide)j(ho)o(w)e(to)g(parse)g(this)g(input?)62
1607 y(The)j(metho)q(d)f(used)h(in)g(GNU)f(C)g(is)h(to)f(ha)o(v)o(e)g
(t)o(w)o(o)e(di\013eren)o(t)j(tok)o(en)f(t)o(yp)q(es,)g
Fk(IDENTIFIER)f Fp(and)h Fk(TYPENAME)p Fp(.)0 1669 y(When)j
Fk(yylex)f Fp(\014nds)i(an)f(iden)o(ti\014er,)i(it)e(lo)q(oks)g(up)g
(the)g(curren)o(t)g(declaration)h(of)e(the)h(iden)o(ti\014er)h(in)g
(order)f(to)0 1731 y(decide)c(whic)o(h)g(tok)o(en)e(t)o(yp)q(e)h(to)f
(return:)20 b Fk(TYPENAME)14 b Fp(if)h(the)g(iden)o(ti\014er)h(is)g
(declared)g(as)e(a)g(t)o(yp)q(edef,)h Fk(IDENTIFIER)0
1794 y Fp(otherwise.)62 1932 y(The)20 b(grammar)e(rules)i(can)g(then)f
(express)h(the)f(con)o(text)g(dep)q(endency)j(b)o(y)d(the)h(c)o(hoice)g
(of)f(tok)o(en)g(t)o(yp)q(e)h(to)0 1994 y(recognize.)35
b Fk(IDENTIFIER)18 b Fp(is)j(accepted)f(as)g(an)g(expression,)h(but)f
Fk(TYPENAME)f Fp(is)i(not.)33 b Fk(TYPENAME)19 b Fp(can)h(start)0
2057 y(a)h(declaration,)i(but)f Fk(IDENTIFIER)e Fp(cannot.)38
b(In)22 b(con)o(texts)f(where)h(the)f(meaning)h(of)f(the)g(iden)o
(ti\014er)i(is)f Fl(not)0 2119 y Fp(signi\014can)o(t,)13
b(suc)o(h)f(as)f(in)i(declarations)f(that)f(can)h(shado)o(w)f(a)g(t)o
(yp)q(edef)h(name,)g(either)h Fk(TYPENAME)d Fp(or)h Fk(IDENTIFIER)0
2181 y Fp(is)16 b(accepted|there)g(is)g(one)f(rule)h(for)f(eac)o(h)g
(of)g(the)g(t)o(w)o(o)f(tok)o(en)h(t)o(yp)q(es.)62 2320
y(This)g(tec)o(hnique)h(is)f(simple)h(to)e(use)g(if)h(the)g(decision)h
(of)e(whic)o(h)h(kinds)h(of)e(iden)o(ti\014ers)i(to)d(allo)o(w)i(is)g
(made)f(at)g(a)0 2382 y(place)i(close)f(to)g(where)g(the)g(iden)o
(ti\014er)h(is)g(parsed.)k(But)15 b(in)g(C)g(this)g(is)h(not)e(alw)o(a)
o(ys)g(so:)20 b(C)15 b(allo)o(ws)g(a)f(declaration)0
2444 y(to)h(redeclare)h(a)f(t)o(yp)q(edef)g(name)g(pro)o(vided)h(an)g
(explicit)h(t)o(yp)q(e)e(has)g(b)q(een)i(sp)q(eci\014ed)g(earlier:)120
2570 y Fk(typedef)23 b(int)g(foo,)h(bar,)f(lose;)120
2620 y(static)g(foo)g(\(bar\);)191 b(/*)23 b Fp(redeclare)16
b Fk(bar)f Fp(as)g(static)g(v)m(ariable)25 b Fk(*/)120
2670 y(static)e(int)g(foo)h(\(lose\);)71 b(/*)23 b Fp(redeclare)16
b Fk(foo)f Fp(as)g(function)25 b Fk(*/)p eop
%%Page: 82 84
82 83 bop 0 -58 a Fp(82)1697 b(Bison)16 b(1.20)62 183
y(Unfortunately)l(,)h(the)f(name)h(b)q(eing)h(declared)f(is)g
(separated)f(from)g(the)g(declaration)i(construct)e(itself)h(b)o(y)f(a)
0 246 y(complicated)h(syn)o(tactic)e(structure|the)g(\\declarator".)62
396 y(As)20 b(a)f(result,)h(the)g(part)f(of)g(Bison)h(parser)f(for)g(C)
g(needs)h(to)f(b)q(e)h(duplicated,)j(with)c(all)i(the)e(non)o(terminal)
0 459 y(names)14 b(c)o(hanged:)19 b(once)14 b(for)g(parsing)g(a)f
(declaration)i(in)g(whic)o(h)f(a)g(t)o(yp)q(edef)g(name)g(can)g(b)q(e)g
(rede\014ned,)i(and)e(once)0 521 y(for)e(parsing)g(a)h(declaration)g
(in)g(whic)o(h)g(that)f(can't)g(b)q(e)h(done.)19 b(Here)13
b(is)g(a)f(part)g(of)g(the)g(duplication,)j(with)e(actions)0
583 y(omitted)i(for)g(brevit)o(y:)120 722 y Fk(initdcl:)359
771 y(declarator)22 b(maybeasm)h('=')359 821 y(init)311
871 y(|)h(declarator)e(maybeasm)311 921 y(;)120 1020
y(notype_initdcl:)359 1070 y(notype_declarator)f(maybeasm)i('=')359
1120 y(init)311 1170 y(|)h(notype_declarator)d(maybeasm)311
1220 y(;)0 1371 y Fp(Here)13 b Fk(initdcl)f Fp(can)h(redeclare)h(a)e(t)
o(yp)q(edef)h(name,)g(but)g Fk(notype_initdcl)e Fp(cannot.)19
b(The)13 b(distinction)i(b)q(et)o(w)o(een)0 1433 y Fk(declarator)f
Fp(and)h Fk(notype_declarator)e Fp(is)j(the)f(same)g(sort)f(of)h
(thing.)62 1584 y(There)k(is)h(some)e(similarit)o(y)j(b)q(et)o(w)o(een)
e(this)g(tec)o(hnique)h(and)f(a)g(lexical)i(tie-in)f(\(describ)q(ed)h
(next\),)e(in)h(that)0 1646 y(information)10 b(whic)o(h)i(alters)e(the)
g(lexical)j(analysis)e(is)g(c)o(hanged)f(during)i(parsing)e(b)o(y)g
(other)g(parts)g(of)g(the)g(program.)0 1708 y(The)16
b(di\013erence)h(is)f(here)h(the)f(information)f(is)i(global,)f(and)g
(is)g(used)h(for)e(other)g(purp)q(oses)i(in)f(the)g(program.)21
b(A)0 1770 y(true)15 b(lexical)i(tie-in)g(has)e(a)g(sp)q(ecial-purp)q
(ose)j(\015ag)d(con)o(trolled)h(b)o(y)f(the)g(syn)o(tactic)g(con)o
(text.)0 2119 y Fo(7.2)33 b(Lexical)16 b(Tie-ins)62 2270
y Fp(One)f(w)o(a)o(y)d(to)h(handle)i(con)o(text-dep)q(endency)h(is)e
(the)g Fl(lexical)i(tie-in)p Fp(:)k(a)14 b(\015ag)f(whic)o(h)i(is)f
(set)f(b)o(y)h(Bison)g(actions,)0 2332 y(whose)h(purp)q(ose)h(is)g(to)e
(alter)h(the)h(w)o(a)o(y)e(tok)o(ens)g(are)h(parsed.)62
2483 y(F)l(or)20 b(example,)i(supp)q(ose)g(w)o(e)e(ha)o(v)o(e)g(a)g
(language)h(v)m(aguely)g(lik)o(e)h(C,)e(but)g(with)h(a)f(sp)q(ecial)j
(construct)d(`)p Fk(hex)0 2545 y(\()p Fl(hex-expr)s Fk(\))p
Fp('.)26 b(After)16 b(the)i(k)o(eyw)o(ord)e Fk(hex)g
Fp(comes)h(an)g(expression)h(in)g(paren)o(theses)f(in)h(whic)o(h)g(all)
g(in)o(tegers)f(are)0 2608 y(hexadecimal.)j(In)12 b(particular,)h(the)e
(tok)o(en)g(`)p Fk(a1b)p Fp(')f(m)o(ust)h(b)q(e)h(treated)f(as)g(an)g
(in)o(teger)h(rather)f(than)g(as)g(an)g(iden)o(ti\014er)0
2670 y(if)16 b(it)f(app)q(ears)g(in)h(that)f(con)o(text.)k(Here)d(is)f
(ho)o(w)g(y)o(ou)g(can)g(do)g(it:)p eop
%%Page: 83 85
83 84 bop 0 -58 a Fp(Chapter)15 b(7:)k(Handling)e(Con)o(text)d(Dep)q
(endencies)1037 b(83)120 183 y Fk(\045{)120 246 y(int)23
b(hexflag;)120 308 y(\045})120 370 y(\045\045)120 432
y Fh(:)8 b(:)g(:)120 500 y Fk(expr:)71 b(IDENTIFIER)311
562 y(|)24 b(constant)311 624 y(|)g(HEX)f('\(')502 687
y({)h(hexflag)e(=)i(1;)g(})359 749 y(expr)f('\)')502
811 y({)h(hexflag)e(=)i(0;)573 873 y($$)g(=)g($4;)f(})311
936 y(|)h(expr)f('+')g(expr)502 998 y({)h($$)f(=)h(make_sum)f(\($1,)g
($3\);)g(})311 1060 y Fh(:)8 b(:)g(:)311 1122 y Fk(;)120
1196 y(constant:)359 1258 y(INTEGER)311 1320 y(|)24 b(STRING)311
1382 y(;)0 1524 y Fp(Here)12 b(w)o(e)g(assume)g(that)f
Fk(yylex)g Fp(lo)q(oks)h(at)g(the)g(v)m(alue)h(of)e Fk(hexflag)p
Fp(;)h(when)g(it)h(is)f(nonzero,)g(all)h(in)o(tegers)f(are)g(parsed)0
1586 y(in)k(hexadecimal,)g(and)g(tok)o(ens)f(starting)f(with)i(letters)
f(are)g(parsed)g(as)g(in)o(tegers)g(if)h(p)q(ossible.)62
1734 y(The)h(declaration)h(of)e Fk(hexflag)g Fp(sho)o(wn)h(in)g(the)g
(C)g(declarations)g(section)h(of)e(the)h(parser)f(\014le)i(is)f(needed)
i(to)0 1797 y(mak)o(e)f(it)g(accessible)i(to)e(the)g(actions)h(\(see)f
(Section)h(3.1.1)e([The)h(C)g(Declarations)g(Section],)h(page)g(39\).)
28 b(Y)l(ou)0 1859 y(m)o(ust)15 b(also)g(write)g(the)g(co)q(de)h(in)g
Fk(yylex)f Fp(to)f(ob)q(ey)i(the)f(\015ag.)0 2186 y Fo(7.3)33
b(Lexical)16 b(Tie-ins)g(and)g(Error)g(Reco)n(v)n(ery)62
2335 y Fp(Lexical)h(tie-ins)f(mak)o(e)e(strict)h(demands)h(on)e(an)o(y)
h(error)f(reco)o(v)o(ery)g(rules)i(y)o(ou)e(ha)o(v)o(e.)20
b(See)15 b(Chapter)g(6)f([Error)0 2397 y(Reco)o(v)o(ery],)g(page)i(77.)
62 2545 y(The)h(reason)f(for)g(this)g(is)h(that)f(the)g(purp)q(ose)h
(of)f(an)h(error)e(reco)o(v)o(ery)h(rule)h(is)g(to)f(ab)q(ort)g(the)g
(parsing)h(of)f(one)0 2608 y(construct)h(and)g(resume)h(in)g(some)f
(larger)g(construct.)26 b(F)l(or)16 b(example,)j(in)f(C-lik)o(e)g
(languages,)g(a)f(t)o(ypical)h(error)0 2670 y(reco)o(v)o(ery)d(rule)h
(is)f(to)g(skip)h(tok)o(ens)e(un)o(til)j(the)e(next)g(semicolon,)h(and)
g(then)f(start)f(a)h(new)g(statemen)o(t,)f(lik)o(e)j(this:)p
eop
%%Page: 84 86
84 85 bop 0 -58 a Fp(84)1697 b(Bison)16 b(1.20)120 183
y Fk(stmt:)71 b(expr)23 b(';')311 233 y(|)h(IF)f('\(')h(expr)f('\)')g
(stmt)h({)f Fh(:)8 b(:)g(:)22 b Fk(})311 283 y Fh(:)8
b(:)g(:)311 333 y Fk(error)23 b(';')502 382 y({)h(hexflag)e(=)i(0;)g(})
311 432 y(;)62 569 y Fp(If)13 b(there)g(is)g(a)f(syn)o(tax)g(error)g
(in)h(the)g(middle)h(of)e(a)g(`)p Fk(hex)j(\()p Fl(expr)s
Fk(\))p Fp(')d(construct,)h(this)g(error)e(rule)j(will)g(apply)l(,)g
(and)0 632 y(then)k(the)f(action)h(for)f(the)g(completed)i(`)p
Fk(hex)14 b(\()p Fl(expr)s Fk(\))p Fp(')j(will)i(nev)o(er)f(run.)27
b(So)17 b Fk(hexflag)g Fp(w)o(ould)g(remain)h(set)g(for)0
694 y(the)d(en)o(tire)g(rest)g(of)f(the)h(input,)g(or)g(un)o(til)h(the)
e(next)h Fk(hex)g Fp(k)o(eyw)o(ord,)e(causing)j(iden)o(ti\014ers)g(to)e
(b)q(e)i(misin)o(terpreted)0 756 y(as)f(in)o(tegers.)62
893 y(T)l(o)g(a)o(v)o(oid)g(this)h(problem)g(the)f(error)f(reco)o(v)o
(ery)h(rule)h(itself)g(clears)g Fk(hexflag)p Fp(.)62
1030 y(There)k(ma)o(y)e(also)h(b)q(e)h(an)f(error)f(reco)o(v)o(ery)g
(rule)i(that)f(w)o(orks)f(within)i(expressions.)32 b(F)l(or)18
b(example,)j(there)0 1092 y(could)16 b(b)q(e)g(a)f(rule)h(whic)o(h)g
(applies)h(within)f(paren)o(theses)g(and)f(skips)h(to)e(the)i
(close-paren)o(thesis:)120 1225 y Fk(expr:)71 b Fh(:)8
b(:)g(:)311 1287 y Fk(|)24 b('\(')f(expr)g('\)')502 1350
y({)h($$)f(=)h($2;)f(})311 1412 y(|)h('\(')f(error)g('\)')311
1474 y Fh(:)8 b(:)g(:)62 1606 y Fp(If)14 b(this)g(rule)g(acts)f(within)
i(the)e Fk(hex)g Fp(construct,)h(it)f(is)h(not)f(going)h(to)f(ab)q(ort)
f(that)h(construct)g(\(since)i(it)e(applies)0 1669 y(to)i(an)i(inner)g
(lev)o(el)g(of)f(paren)o(theses)g(within)h(the)g(construct\).)22
b(Therefore,)15 b(it)i(should)g(not)f(clear)g(the)g(\015ag:)22
b(the)0 1731 y(rest)15 b(of)g(the)g Fk(hex)g Fp(construct)f(should)j(b)
q(e)e(parsed)h(with)f(the)h(\015ag)e(still)j(in)f(e\013ect.)62
1868 y(What)i(if)i(there)e(is)i(an)e(error)g(reco)o(v)o(ery)h(rule)g
(whic)o(h)h(migh)o(t)e(ab)q(ort)h(out)f(of)g(the)h Fk(hex)f
Fp(construct)h(or)f(migh)o(t)0 1930 y(not,)c(dep)q(ending)k(on)d
(circumstances?)21 b(There)15 b(is)h(no)f(w)o(a)o(y)f(y)o(ou)h(can)g
(write)g(the)g(action)g(to)g(determine)h(whether)0 1992
y(a)g Fk(hex)g Fp(construct)g(is)h(b)q(eing)h(ab)q(orted)e(or)g(not.)24
b(So)16 b(if)h(y)o(ou)f(are)g(using)i(a)e(lexical)i(tie-in,)g(y)o(ou)e
(had)h(b)q(etter)f(mak)o(e)0 2055 y(sure)h(y)o(our)g(error)f(reco)o(v)o
(ery)h(rules)h(are)f(not)f(of)h(this)h(kind.)27 b(Eac)o(h)17
b(rule)h(m)o(ust)e(b)q(e)i(suc)o(h)f(that)g(y)o(ou)g(can)g(b)q(e)h
(sure)0 2117 y(that)c(it)i(alw)o(a)o(ys)e(will,)j(or)e(alw)o(a)o(ys)f
(w)o(on't,)g(ha)o(v)o(e)g(to)h(clear)h(the)f(\015ag.)p
eop
%%Page: 85 87
85 86 bop 0 -58 a Fp(Chapter)15 b(8:)k(Debugging)d(Y)l(our)f(P)o(arser)
1208 b(85)0 183 y Fm(8)41 b(Debugging)14 b(Y)-7 b(our)16
b(P)n(arser)62 368 y Fp(If)e(a)g(Bison)g(grammar)f(compiles)i(prop)q
(erly)g(but)f(do)q(esn't)f(do)h(what)f(y)o(ou)h(w)o(an)o(t)f(when)h(it)
g(runs,)g(the)g Fk(yydebug)0 430 y Fp(parser-trace)h(feature)g(can)g
(help)h(y)o(ou)f(\014gure)h(out)e(wh)o(y)l(.)62 567 y(T)l(o)h(enable)h
(compilation)f(of)g(trace)f(facilities,)i(y)o(ou)f(m)o(ust)f(de\014ne)i
(the)e(macro)g Fk(YYDEBUG)g Fp(when)h(y)o(ou)f(compile)0
629 y(the)h(parser.)k(Y)l(ou)c(could)h(use)f(`)p Fk(-DYYDEBUG=1)p
Fp(')d(as)j(a)f(compiler)i(option)f(or)f(y)o(ou)h(could)g(put)g(`)p
Fk(#define)f(YYDEBUG)0 692 y(1)p Fp(')f(in)h(the)g(C)f(declarations)h
(section)g(of)f(the)h(grammar)e(\014le)i(\(see)f(Section)i(3.1.1)d
([The)h(C)g(Declarations)h(Section],)0 754 y(page)i(39\).)23
b(Alternativ)o(ely)l(,)18 b(use)f(the)g(`)p Fk(-t)p Fp(')e(option)i
(when)g(y)o(ou)f(run)h(Bison)g(\(see)g(Chapter)f(9)g([In)o(v)o(oking)h
(Bison],)0 816 y(page)e(87\).)k(W)l(e)c(alw)o(a)o(ys)g(de\014ne)h
Fk(YYDEBUG)e Fp(so)h(that)g(debugging)h(is)f(alw)o(a)o(ys)g(p)q
(ossible.)62 953 y(The)21 b(trace)e(facilit)o(y)i(uses)g
Fk(stderr)p Fp(,)f(so)f(y)o(ou)h(m)o(ust)g(add)g Fk(#include)14
b(<stdio.h>)19 b Fp(to)g(the)h(C)g(declarations)0 1015
y(section)c(unless)g(it)g(is)f(already)h(there.)62 1152
y(Once)g(y)o(ou)e(ha)o(v)o(e)g(compiled)i(the)e(program)g(with)g(trace)
g(facilities,)j(the)d(w)o(a)o(y)g(to)f(request)i(a)f(trace)g(is)h(to)f
(store)0 1215 y(a)j(nonzero)h(v)m(alue)h(in)g(the)f(v)m(ariable)h
Fk(yydebug)p Fp(.)26 b(Y)l(ou)18 b(can)g(do)g(this)g(b)o(y)f(making)h
(the)g(C)g(co)q(de)g(do)g(it)g(\(in)g Fk(main)p Fp(,)0
1277 y(p)q(erhaps\),)d(or)g(y)o(ou)g(can)g(alter)g(the)g(v)m(alue)i
(with)e(a)g(C)g(debugger.)62 1414 y(Eac)o(h)i(step)g(tak)o(en)g(b)o(y)g
(the)g(parser)g(when)g Fk(yydebug)f Fp(is)i(nonzero)f(pro)q(duces)h(a)e
(line)j(or)e(t)o(w)o(o)e(of)i(trace)g(infor-)0 1476 y(mation,)e
(written)g(on)g Fk(stderr)p Fp(.)k(The)c(trace)g(messages)g(tell)h(y)o
(ou)f(these)g(things:)37 1613 y Fn(\017)30 b Fp(Eac)o(h)15
b(time)h(the)f(parser)g(calls)h Fk(yylex)p Fp(,)e(what)h(kind)h(of)f
(tok)o(en)f(w)o(as)h(read.)37 1687 y Fn(\017)30 b Fp(Eac)o(h)12
b(time)g(a)f(tok)o(en)g(is)i(shifted,)g(the)e(depth)i(and)f(complete)g
(con)o(ten)o(ts)f(of)h(the)g(state)f(stac)o(k)g(\(see)g(Section)i(5.5)
90 1750 y([P)o(arser)h(States],)g(page)h(71\).)37 1824
y Fn(\017)30 b Fp(Eac)o(h)20 b(time)g(a)f(rule)i(is)f(reduced,)i(whic)o
(h)f(rule)f(it)h(is,)g(and)f(the)g(complete)g(con)o(ten)o(ts)f(of)h
(the)g(state)f(stac)o(k)90 1886 y(afterw)o(ard.)62 2035
y(T)l(o)14 b(mak)o(e)g(sense)g(of)g(this)h(information,)f(it)g(helps)i
(to)d(refer)h(to)g(the)g(listing)h(\014le)h(pro)q(duced)f(b)o(y)f(the)g
(Bison)h(`)p Fk(-v)p Fp(')0 2097 y(option)e(\(see)f(Chapter)g(9)g([In)o
(v)o(oking)g(Bison],)h(page)f(87\).)18 b(This)13 b(\014le)h(sho)o(ws)d
(the)i(meaning)g(of)e(eac)o(h)i(state)e(in)j(terms)0
2159 y(of)i(p)q(ositions)i(in)g(v)m(arious)f(rules,)g(and)g(also)g
(what)f(eac)o(h)h(state)f(will)i(do)f(with)g(eac)o(h)g(p)q(ossible)h
(input)g(tok)o(en.)24 b(As)0 2222 y(y)o(ou)15 b(read)h(the)f(successiv)
o(e)i(trace)e(messages,)g(y)o(ou)g(can)h(see)g(that)f(the)g(parser)h
(is)g(functioning)h(according)f(to)f(its)0 2284 y(sp)q(eci\014cation)h
(in)e(the)g(listing)h(\014le.)20 b(Ev)o(en)o(tually)15
b(y)o(ou)e(will)i(arriv)o(e)f(at)f(the)g(place)i(where)f(something)g
(undesirable)0 2346 y(happ)q(ens,)i(and)f(y)o(ou)g(will)i(see)e(whic)o
(h)i(parts)d(of)h(the)g(grammar)f(are)h(to)f(blame.)62
2483 y(The)h(parser)f(\014le)h(is)g(a)f(C)g(program)g(and)g(y)o(ou)g
(can)h(use)g(C)f(debuggers)g(on)h(it,)f(but)h(it's)f(not)g(easy)g(to)g
(in)o(terpret)0 2545 y(what)20 b(it)h(is)g(doing.)37
b(The)21 b(parser)f(function)i(is)f(a)f(\014nite-state)h(mac)o(hine)h
(in)o(terpreter,)g(and)f(aside)g(from)f(the)0 2608 y(actions)e(it)g
(executes)g(the)f(same)h(co)q(de)g(o)o(v)o(er)f(and)g(o)o(v)o(er.)26
b(Only)19 b(the)f(v)m(alues)h(of)e(v)m(ariables)i(sho)o(w)e(where)g(in)
i(the)0 2670 y(grammar)14 b(it)h(is)h(w)o(orking.)p eop
%%Page: 86 88
86 87 bop 0 -58 a Fp(86)1697 b(Bison)16 b(1.20)62 183
y(The)11 b(debugging)h(information)e(normally)i(giv)o(es)e(the)h(tok)o
(en)f(t)o(yp)q(e)h(of)f(eac)o(h)h(tok)o(en)f(read,)h(but)g(not)f(its)h
(seman)o(tic)0 246 y(v)m(alue.)26 b(Y)l(ou)16 b(can)h(optionally)h
(de\014ne)g(a)e(macro)g(named)h Fk(YYPRINT)f Fp(to)g(pro)o(vide)h(a)g
(w)o(a)o(y)e(to)h(prin)o(t)h(the)g(v)m(alue.)26 b(If)0
308 y(y)o(ou)16 b(de\014ne)h Fk(YYPRINT)p Fp(,)e(it)h(should)h(tak)o(e)
f(three)g(argumen)o(ts.)22 b(The)16 b(parser)g(will)h(pass)f(a)g
(standard)g(I/O)g(stream,)0 370 y(the)f(n)o(umeric)h(co)q(de)g(for)f
(the)g(tok)o(en)g(t)o(yp)q(e,)g(and)g(the)g(tok)o(en)g(v)m(alue)i
(\(from)d Fk(yylval)p Fp(\).)62 507 y(Here)23 b(is)f(an)h(example)g(of)
e Fk(YYPRINT)g Fp(suitable)j(for)d(the)i(m)o(ulti-function)h
(calculator)e(\(see)g(Section)i(2.4.1)0 569 y([Declarations)15
b(for)g Fk(mfcalc)p Fp(],)e(page)i(32\):)120 694 y Fk(#define)23
b(YYPRINT\(file,)f(type,)h(value\))71 b(yyprint)23 b(\(file,)g(type,)g
(value\))120 793 y(static)g(void)120 843 y(yyprint)g(\(file,)g(type,)g
(value\))239 893 y(FILE)h(*file;)239 943 y(int)g(type;)239
993 y(YYSTYPE)f(value;)120 1043 y({)168 1092 y(if)g(\(type)g(==)h
(VAR\))215 1142 y(fprintf)f(\(file,)g(")h(\045s",)f
(value.tptr->name\);)168 1192 y(else)g(if)h(\(type)f(==)g(NUM\))215
1242 y(fprintf)g(\(file,)g(")h(\045d",)f(value.val\);)120
1292 y(})p eop
%%Page: 87 89
87 88 bop 0 -58 a Fp(Chapter)15 b(9:)k(In)o(v)o(oking)d(Bison)1377
b(87)0 183 y Fm(9)41 b(In)n(v)n(oking)13 b(Bison)62 356
y Fp(The)j(usual)g(w)o(a)o(y)e(to)g(in)o(v)o(ok)o(e)i(Bison)f(is)h(as)f
(follo)o(ws:)120 480 y Fk(bison)23 b Fl(in\014le)62 617
y Fp(Here)15 b Fl(in\014le)k Fp(is)14 b(the)h(grammar)e(\014le)i(name,)
f(whic)o(h)h(usually)h(ends)f(in)g(`)p Fk(.y)p Fp('.)j(The)d(parser)f
(\014le's)h(name)f(is)h(made)0 680 y(b)o(y)g(replacing)h(the)f(`)p
Fk(.y)p Fp(')e(with)i(`)p Fk(.tab.c)p Fp('.)j(Th)o(us,)d(the)g(`)p
Fk(bison)f(foo.y)p Fp(')f(\014lename)j(yields)h(`)p Fk(foo.tab.c)p
Fp(',)12 b(and)j(the)0 742 y(`)p Fk(bison)f(hack/foo.y)p
Fp(')g(\014lename)i(yields)h(`)p Fk(hack/foo.tab.c)p
Fp('.)0 952 y Fo(9.1)33 b(Bison)15 b(Options)62 1089
y Fp(Bison)k(supp)q(orts)f(b)q(oth)g(traditional)g(single-letter)i
(options)e(and)g(mnemonic)h(long)f(option)g(names.)28
b(Long)0 1151 y(option)15 b(names)g(are)f(indicated)i(with)f(`)p
Fk(--)p Fp(')f(instead)h(of)g(`)p Fk(-)p Fp('.)j(Abbreviations)e(for)e
(option)h(names)g(are)f(allo)o(w)o(ed)h(as)0 1213 y(long)j(as)g(they)g
(are)g(unique.)30 b(When)19 b(a)f(long)g(option)g(tak)o(es)g(an)g
(argumen)o(t,)f(lik)o(e)j(`)p Fk(--file-prefix)p Fp(',)15
b(connect)0 1275 y(the)g(option)h(name)f(and)g(the)h(argumen)o(t)e
(with)i(`)p Fk(=)p Fp('.)62 1412 y(Here)d(is)h(a)e(list)i(of)e(options)
h(that)f(can)h(b)q(e)h(used)f(with)g(Bison,)h(alphab)q(etized)h(b)o(y)e
(short)f(option.)19 b(It)13 b(is)h(follo)o(w)o(ed)0 1475
y(b)o(y)h(a)g(cross)g(k)o(ey)g(alphab)q(etized)i(b)o(y)e(long)h
(option.)0 1621 y(`)p Fk(-b)f Fl(\014le-pre\014x)s Fp(')0
1683 y(`)p Fk(--file-prefix=)p Fl(pre\014x)s Fp(')240
1745 y(Sp)q(ecify)i(a)e(pre\014x)g(to)g(use)h(for)e(all)i(Bison)g
(output)f(\014le)h(names.)k(The)c(names)f(are)g(c)o(hosen)g(as)g(if)h
(the)240 1807 y(input)g(\014le)g(w)o(ere)f(named)h(`)p
Fl(pre\014x)p Fk(.c)p Fp('.)0 1887 y(`)p Fk(-d)p Fp(')0
1950 y(`)p Fk(--defines)p Fp(')240 2012 y(W)l(rite)11
b(an)h(extra)e(output)h(\014le)i(con)o(taining)f(macro)e(de\014nitions)
j(for)e(the)g(tok)o(en)g(t)o(yp)q(e)g(names)h(de\014ned)240
2074 y(in)i(the)g(grammar)e(and)i(the)g(seman)o(tic)g(v)m(alue)h(t)o
(yp)q(e)e Fk(YYSTYPE)p Fp(,)g(as)g(w)o(ell)i(as)e(a)g(few)h
Fk(extern)f Fp(v)m(ariable)240 2136 y(declarations.)240
2208 y(If)i(the)h(parser)f(output)g(\014le)h(is)g(named)f(`)p
Fl(name)p Fk(.c)p Fp(')f(then)i(this)f(\014le)i(is)e(named)h(`)p
Fl(name)p Fk(.h)p Fp('.)240 2279 y(This)k(output)f(\014le)h(is)g(essen)
o(tial)g(if)g(y)o(ou)f(wish)h(to)e(put)i(the)f(de\014nition)i(of)e
Fk(yylex)f Fp(in)j(a)d(separate)240 2341 y(source)13
b(\014le,)g(b)q(ecause)h Fk(yylex)e Fp(needs)h(to)f(b)q(e)h(able)g(to)f
(refer)h(to)f(tok)o(en)g(t)o(yp)q(e)g(co)q(des)h(and)g(the)g(v)m
(ariable)240 2403 y Fk(yylval)p Fp(.)19 b(See)d(Section)g(4.2.2)d
([Seman)o(tic)j(V)l(alues)g(of)f(T)l(ok)o(ens],)f(page)h(58.)0
2483 y(`)p Fk(-l)p Fp(')0 2545 y(`)p Fk(--no-lines)p
Fp(')240 2608 y(Don't)f(put)h(an)o(y)g Fk(#line)f Fp(prepro)q(cessor)h
(commands)g(in)h(the)f(parser)g(\014le.)21 b(Ordinarily)c(Bison)f(puts)
240 2670 y(them)f(in)g(the)g(parser)f(\014le)i(so)e(that)g(the)h(C)f
(compiler)i(and)f(debuggers)g(will)h(asso)q(ciate)f(errors)f(with)p
eop
%%Page: 88 90
88 89 bop 0 -58 a Fp(88)1697 b(Bison)16 b(1.20)240 183
y(y)o(our)d(source)g(\014le,)h(the)f(grammar)f(\014le.)20
b(This)14 b(option)g(causes)f(them)g(to)g(asso)q(ciate)g(errors)f(with)
i(the)240 246 y(parser)h(\014le,)h(treating)f(it)g(an)g(indep)q(enden)o
(t)j(source)d(\014le)h(in)g(its)g(o)o(wn)e(righ)o(t.)0
370 y(`)p Fk(-o)h Fl(out\014le)s Fp(')0 432 y(`)p Fk(--output-file=)p
Fl(out\014le)s Fp(')240 494 y(Sp)q(ecify)i(the)e(name)g
Fl(out\014le)k Fp(for)14 b(the)i(parser)e(\014le.)240
587 y(The)h(other)g(output)g(\014les')h(names)f(are)f(constructed)i
(from)e Fl(out\014le)k Fp(as)d(describ)q(ed)i(under)f(the)f(`)p
Fk(-v)p Fp(')240 650 y(and)g(`)p Fk(-d)p Fp(')g(switc)o(hes.)0
774 y(`)p Fk(-p)g Fl(pre\014x)s Fp(')0 836 y(`)p Fk(--name-prefix=)p
Fl(pre\014x)s Fp(')240 898 y(Rename)d(the)f(external)h(sym)o(b)q(ols)g
(used)g(in)g(the)g(parser)f(so)g(that)f(they)i(start)e(with)h
Fl(pre\014x)k Fp(instead)d(of)240 960 y(`)p Fk(yy)p Fp('.)18
b(The)c(precise)g(list)g(of)f(sym)o(b)q(ols)g(renamed)h(is)f
Fk(yyparse)p Fp(,)g Fk(yylex)p Fp(,)f Fk(yyerror)p Fp(,)g
Fk(yylval)p Fp(,)h Fk(yychar)240 1023 y Fp(and)i Fk(yydebug)p
Fp(.)240 1116 y(F)l(or)g(example,)g(if)h(y)o(ou)f(use)g(`)p
Fk(-p)g(c)p Fp(',)f(the)h(names)g(b)q(ecome)h Fk(cparse)p
Fp(,)e Fk(clex)p Fp(,)h(and)g(so)g(on.)240 1209 y(See)h(Section)g(3.7)e
([Multiple)j(P)o(arsers)d(in)i(the)f(Same)h(Program],)d(page)i(56.)0
1333 y(`)p Fk(-t)p Fp(')0 1395 y(`)p Fk(--debug)p Fp(')46
b(Output)18 b(a)f(de\014nition)i(of)e(the)h(macro)f Fk(YYDEBUG)f
Fp(in)o(to)h(the)h(parser)f(\014le,)i(so)e(that)f(the)i(debugging)240
1458 y(facilities)f(are)e(compiled.)22 b(See)16 b(Chapter)e(8)h
([Debugging)h(Y)l(our)f(P)o(arser],)e(page)i(85.)0 1582
y(`)p Fk(-v)p Fp(')0 1644 y(`)p Fk(--verbose)p Fp(')240
1706 y(W)l(rite)e(an)f(extra)f(output)i(\014le)g(con)o(taining)g(v)o
(erb)q(ose)f(descriptions)i(of)e(the)h(parser)f(states)f(and)i(what)240
1769 y(is)j(done)f(for)g(eac)o(h)g(t)o(yp)q(e)g(of)g(lo)q(ok-ahead)h
(tok)o(en)f(in)h(that)e(state.)240 1862 y(This)f(\014le)h(also)e
(describ)q(es)j(all)e(the)g(con\015icts,)g(b)q(oth)g(those)f(resolv)o
(ed)h(b)o(y)g(op)q(erator)e(precedence)k(and)240 1924
y(the)g(unresolv)o(ed)h(ones.)240 2017 y(The)e(\014le's)g(name)f(is)h
(made)g(b)o(y)f(remo)o(ving)g(`)p Fk(.tab.c)p Fp(')f(or)h(`)p
Fk(.c)p Fp(')f(from)h(the)h(parser)f(output)g(\014le)h(name,)240
2080 y(and)h(adding)h(`)p Fk(.output)p Fp(')e(instead.)240
2173 y(Therefore,)22 b(if)g(the)g(input)g(\014le)g(is)g(`)p
Fk(foo.y)p Fp(',)f(then)h(the)f(parser)g(\014le)i(is)f(called)h(`)p
Fk(foo.tab.c)p Fp(')c(b)o(y)240 2235 y(default.)h(As)c(a)f
(consequence,)h(the)f(v)o(erb)q(ose)g(output)g(\014le)h(is)g(called)h
(`)p Fk(foo.output)p Fp('.)0 2359 y(`)p Fk(-V)p Fp(')0
2421 y(`)p Fk(--version)p Fp(')240 2484 y(Prin)o(t)e(the)g(v)o(ersion)h
(n)o(um)o(b)q(er)f(of)g(Bison)h(and)f(exit.)0 2608 y(`)p
Fk(-h)p Fp(')0 2670 y(`)p Fk(--help)p Fp(')70 b(Prin)o(t)15
b(a)g(summary)g(of)f(the)i(command-line)h(options)e(to)g(Bison)g(and)h
(exit.)p eop
%%Page: 89 91
89 90 bop 0 -58 a Fp(Chapter)15 b(9:)k(In)o(v)o(oking)d(Bison)1377
b(89)0 251 y(`)p Fk(-y)p Fp(')0 313 y(`)p Fk(--yacc)p
Fp(')0 375 y(`)p Fk(--fixed-output-files)p Fp(')240 437
y(Equiv)m(alen)o(t)20 b(to)e(`)p Fk(-o)c(y.tab.c)p Fp(';)19
b(the)f(parser)h(output)f(\014le)i(is)f(called)h(`)p
Fk(y.tab.c)p Fp(',)d(and)i(the)f(other)240 500 y(outputs)d(are)h
(called)h(`)p Fk(y.output)p Fp(')c(and)j(`)p Fk(y.tab.h)p
Fp('.)k(The)15 b(purp)q(ose)i(of)e(this)h(switc)o(h)g(is)g(to)f
(imitate)240 562 y(Y)l(acc's)f(output)g(\014le)h(name)e(con)o(v)o(en)o
(tions.)20 b(Th)o(us,)14 b(the)g(follo)o(wing)g(shell)i(script)e(can)g
(substitute)h(for)240 624 y(Y)l(acc:)360 689 y Fk(bison)23
b(-y)h($*)0 939 y Fo(9.2)33 b(Option)15 b(Cross)f(Key)62
1079 y Fp(Here)i(is)h(a)f(list)g(of)g(options,)g(alphab)q(etized)i(b)o
(y)e(long)g(option,)g(to)f(help)i(y)o(ou)f(\014nd)h(the)f(corresp)q
(onding)h(short)0 1141 y(option.)24 1204 y Fk(--debug)59
b(.)23 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)52
b(-t)24 1266 y(--defines)58 b(.)24 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
(.)g(.)f(.)h(.)g(.)g(.)52 b(-d)24 1328 y(--file-prefix)58
b(.)23 b(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)52
b(-b)24 1390 y(--fixed-output-files)33 b(.)24 b(.)f(.)h(.)g(.)g(.)f(.)h
(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)g(.)52 b(-y)24 1453 y(--help)35 b(.)24 b(.)f(.)h(.)g(.)f(.)h(.)
g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)52 b(-h)24
1515 y(--name-prefix)58 b(.)23 b(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
(.)g(.)g(.)52 b(-p)24 1577 y(--no-lines)34 b(.)24 b(.)g(.)f(.)h(.)g(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)52 b(-l)24 1639 y(--output-file)58
b(.)23 b(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)52
b(-o)24 1702 y(--verbose)58 b(.)24 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
(.)g(.)f(.)h(.)g(.)g(.)52 b(-v)24 1764 y(--version)58
b(.)24 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)52
b(-V)24 1826 y(--yacc)35 b(.)24 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)g(.)f(.)h(.)g(.)g(.)52 b(-y)0 2076 y Fo(9.3)33
b(In)n(v)n(oking)17 b(Bison)e(under)h(VMS)62 2216 y Fp(The)f(command)f
(line)i(syn)o(tax)e(for)f(Bison)i(on)f(VMS)h(is)g(a)e(v)m(arian)o(t)i
(of)f(the)g(usual)h(Bison)g(command)f(syn)o(tax|)0 2278
y(adapted)h(to)g(\014t)g(VMS)g(con)o(v)o(en)o(tions.)62
2418 y(T)l(o)d(\014nd)h(the)g(VMS)f(equiv)m(alen)o(t)i(for)e(an)o(y)g
(Bison)h(option,)g(start)e(with)i(the)f(long)h(option,)g(and)f
(substitute)h(a)f(`)p Fk(/)p Fp(')0 2480 y(for)j(the)h(leading)h(`)p
Fk(--)p Fp(',)d(and)i(substitute)g(a)f(`)p Fk(_)p Fp(')g(for)g(eac)o(h)
g(`)p Fk(-)p Fp(')g(in)h(the)g(name)g(of)f(the)g(long)h(option.)22
b(F)l(or)14 b(example,)0 2543 y(the)h(follo)o(wing)h(in)o(v)o(o)q
(cation)g(under)g(VMS:)120 2670 y Fk(bison)23 b(/debug/name_prefix=bar)
e(foo.y)p eop
%%Page: 90 92
90 91 bop 0 -58 a Fp(90)1697 b(Bison)16 b(1.20)0 183
y(is)g(equiv)m(alen)o(t)h(to)d(the)h(follo)o(wing)h(command)f(under)h
(POSIX.)120 308 y Fk(bison)23 b(--debug)g(--name-prefix=bar)f(foo.y)62
445 y Fp(The)14 b(VMS)g(\014le)g(system)f(do)q(es)h(not)f(p)q(ermit)i
(\014lenames)f(suc)o(h)g(as)f(`)p Fk(foo.tab.c)p Fp('.)18
b(In)c(the)f(ab)q(o)o(v)o(e)h(example,)g(the)0 507 y(output)h(\014le)h
(w)o(ould)g(instead)g(b)q(e)f(named)h(`)p Fk(foo_tab.c)p
Fp('.)p eop
%%Page: 91 93
91 92 bop 0 -58 a Fp(App)q(endix)17 b(A:)e(Bison)h(Sym)o(b)q(ols)1344
b(91)0 183 y Fm(App)r(endix)13 b(A)41 b(Bison)15 b(Sym)n(b)r(ols)0
393 y Fk(error)120 b Fp(A)13 b(tok)o(en)g(name)h(reserv)o(ed)f(for)g
(error)g(reco)o(v)o(ery)l(.)19 b(This)14 b(tok)o(en)f(ma)o(y)g(b)q(e)h
(used)g(in)g(grammar)e(rules)i(so)240 455 y(as)h(to)f(allo)o(w)i(the)f
(Bison)h(parser)f(to)g(recognize)h(an)f(error)f(in)j(the)e(grammar)f
(without)h(halting)h(the)240 518 y(pro)q(cess.)j(In)12
b(e\013ect,)f(a)g(sen)o(tence)h(con)o(taining)g(an)f(error)g(ma)o(y)f
(b)q(e)i(recognized)g(as)f(v)m(alid.)20 b(On)12 b(a)f(parse)240
580 y(error,)g(the)h(tok)o(en)f Fk(error)g Fp(b)q(ecomes)h(the)f
(curren)o(t)h(lo)q(ok-ahead)g(tok)o(en.)18 b(Actions)12
b(corresp)q(onding)h(to)240 642 y Fk(error)g Fp(are)g(then)h(executed,)
h(and)f(the)f(lo)q(ok-ahead)i(tok)o(en)e(is)h(reset)f(to)g(the)h(tok)o
(en)f(that)g(originally)240 704 y(caused)j(the)f(violation.)21
b(See)16 b(Chapter)f(6)f([Error)g(Reco)o(v)o(ery],)h(page)g(77.)0
795 y Fk(YYABORT)72 b Fp(Macro)12 b(to)g(pretend)h(that)g(an)f(unreco)o
(v)o(erable)i(syn)o(tax)e(error)g(has)h(o)q(ccurred,)g(b)o(y)g(making)g
Fk(yyparse)240 857 y Fp(return)19 b(1)g(immediately)l(.)33
b(The)19 b(error)g(rep)q(orting)g(function)h Fk(yyerror)e
Fp(is)i(not)e(called.)34 b(See)19 b(Sec-)240 920 y(tion)c(4.1)g([The)g
(P)o(arser)f(F)l(unction)i Fk(yyparse)p Fp(],)d(page)j(57.)0
1010 y Fk(YYACCEPT)48 b Fp(Macro)13 b(to)h(pretend)h(that)e(a)h
(complete)h(utterance)f(of)g(the)h(language)f(has)g(b)q(een)i(read,)e
(b)o(y)g(making)240 1073 y Fk(yyparse)c Fp(return)h(0)g(immediately)l
(.)21 b(See)12 b(Section)g(4.1)e([The)h(P)o(arser)f(F)l(unction)j
Fk(yyparse)p Fp(],)d(page)h(57.)0 1163 y Fk(YYBACKUP)48
b Fp(Macro)21 b(to)g(discard)h(a)g(v)m(alue)h(from)e(the)h(parser)f
(stac)o(k)g(and)h(fak)o(e)f(a)h(lo)q(ok-ahead)g(tok)o(en.)39
b(See)240 1226 y(Section)16 b(4.4)e([Sp)q(ecial)j(F)l(eatures)e(for)g
(Use)g(in)h(Actions],)f(page)g(61.)0 1316 y Fk(YYERROR)72
b Fp(Macro)17 b(to)f(pretend)i(that)f(a)g(syn)o(tax)g(error)g(has)g
(just)g(b)q(een)i(detected:)25 b(call)19 b Fk(yyerror)d
Fp(and)i(then)240 1379 y(p)q(erform)g(normal)g(error)g(reco)o(v)o(ery)f
(if)i(p)q(ossible)h(\(see)e(Chapter)g(6)g([Error)f(Reco)o(v)o(ery],)h
(page)g(77\),)240 1441 y(or)d(\(if)g(reco)o(v)o(ery)f(is)i(imp)q
(ossible\))h(mak)o(e)e Fk(yyparse)f Fp(return)h(1.)20
b(See)15 b(Chapter)g(6)g([Error)f(Reco)o(v)o(ery],)240
1503 y(page)h(77.)0 1594 y Fk(YYERROR_VERBOSE)240 1656
y Fp(Macro)h(that)f(y)o(ou)i(de\014ne)g(with)g Fk(#define)e
Fp(in)j(the)e(Bison)i(declarations)f(section)g(to)f(request)g(v)o(er-)
240 1718 y(b)q(ose,)f(sp)q(eci\014c)i(error)e(message)f(strings)i(when)
f Fk(yyerror)f Fp(is)i(called.)0 1809 y Fk(YYINITDEPTH)240
1871 y Fp(Macro)10 b(for)g(sp)q(ecifying)j(the)e(initial)i(size)f(of)e
(the)h(parser)f(stac)o(k.)18 b(See)11 b(Section)h(5.8)e([Stac)o(k)g(Ov)
o(er\015o)o(w],)240 1934 y(page)15 b(76.)0 2024 y Fk(YYLTYPE)72
b Fp(Macro)15 b(for)h(the)h(data)e(t)o(yp)q(e)i(of)f
Fk(yylloc)p Fp(;)f(a)h(structure)g(with)h(four)f(mem)o(b)q(ers.)23
b(See)17 b(Section)h(4.2.3)240 2087 y([T)l(extual)d(P)o(ositions)h(of)e
(T)l(ok)o(ens],)h(page)g(59.)0 2177 y Fk(YYMAXDEPTH)240
2240 y Fp(Macro)k(for)h(sp)q(ecifying)i(the)f(maxim)o(um)f(size)h(of)f
(the)h(parser)f(stac)o(k.)34 b(See)21 b(Section)g(5.8)f([Stac)o(k)240
2302 y(Ov)o(er\015o)o(w],)14 b(page)h(76.)0 2392 y Fk(YYRECOVERING)240
2455 y Fp(Macro)f(whose)g(v)m(alue)i(indicates)g(whether)e(the)h
(parser)f(is)h(reco)o(v)o(ering)g(from)e(a)i(syn)o(tax)e(error.)19
b(See)240 2517 y(Section)d(4.4)e([Sp)q(ecial)j(F)l(eatures)e(for)g(Use)
g(in)h(Actions],)f(page)g(61.)0 2608 y Fk(YYSTYPE)72
b Fp(Macro)17 b(for)h(the)g(data)f(t)o(yp)q(e)i(of)e(seman)o(tic)i(v)m
(alues;)h Fk(int)e Fp(b)o(y)g(default.)29 b(See)19 b(Section)g(3.5.1)e
([Data)240 2670 y(T)o(yp)q(es)e(of)g(Seman)o(tic)h(V)l(alues],)f(page)g
(45.)p eop
%%Page: 92 94
92 93 bop 0 -58 a Fp(92)1697 b(Bison)16 b(1.20)0 183
y Fk(yychar)96 b Fp(External)22 b(in)o(teger)h(v)m(ariable)g(that)f
(con)o(tains)g(the)g(in)o(teger)h(v)m(alue)g(of)f(the)g(curren)o(t)g
(lo)q(ok-ahead)240 246 y(tok)o(en.)30 b(\(In)19 b(a)f(pure)h(parser,)g
(it)g(is)g(a)f(lo)q(cal)i(v)m(ariable)g(within)g Fk(yyparse)p
Fp(.\))29 b(Error-reco)o(v)o(ery)17 b(rule)240 308 y(actions)11
b(ma)o(y)g(examine)h(this)g(v)m(ariable.)20 b(See)12
b(Section)g(4.4)f([Sp)q(ecial)i(F)l(eatures)e(for)g(Use)g(in)h
(Actions],)240 370 y(page)j(61.)0 458 y Fk(yyclearin)240
520 y Fp(Macro)e(used)i(in)f(error-reco)o(v)o(ery)f(rule)i(actions.)20
b(It)14 b(clears)g(the)g(previous)h(lo)q(ok-ahead)f(tok)o(en.)19
b(See)240 582 y(Chapter)c(6)g([Error)f(Reco)o(v)o(ery],)g(page)h(77.)0
670 y Fk(yydebug)72 b Fp(External)17 b(in)o(teger)h(v)m(ariable)g(set)f
(to)g(zero)g(b)o(y)g(default.)27 b(If)17 b Fk(yydebug)f
Fp(is)i(giv)o(en)g(a)f(nonzero)g(v)m(alue,)240 733 y(the)e(parser)g
(will)h(output)f(information)g(on)g(input)g(sym)o(b)q(ols)h(and)f
(parser)f(action.)20 b(See)c(Chapter)e(8)240 795 y([Debugging)h(Y)l
(our)h(P)o(arser],)d(page)i(85.)0 883 y Fk(yyerrok)72
b Fp(Macro)15 b(to)h(cause)h(parser)f(to)g(reco)o(v)o(er)g(immediately)
i(to)d(its)i(normal)f(mo)q(de)h(after)f(a)g(parse)g(error.)240
945 y(See)g(Chapter)f(6)g([Error)e(Reco)o(v)o(ery],)i(page)g(77.)0
1033 y Fk(yyerror)72 b Fp(User-supplied)22 b(function)e(to)e(b)q(e)i
(called)h(b)o(y)e Fk(yyparse)g Fp(on)g(error.)31 b(The)20
b(function)g(receiv)o(es)g(one)240 1095 y(argumen)o(t,)14
b(a)g(p)q(oin)o(ter)h(to)f(a)g(c)o(haracter)g(string)g(con)o(taining)i
(an)e(error)g(message.)19 b(See)c(Section)h(4.3)240 1157
y([The)f(Error)f(Rep)q(orting)i(F)l(unction)g Fk(yyerror)p
Fp(],)e(page)h(60.)0 1245 y Fk(yylex)120 b Fp(User-supplied)15
b(lexical)f(analyzer)e(function,)i(called)f(with)g(no)f(argumen)o(ts)f
(to)h(get)f(the)i(next)f(tok)o(en.)240 1308 y(See)k(Section)g(4.2)e
([The)h(Lexical)i(Analyzer)f(F)l(unction)g Fk(yylex)p
Fp(],)e(page)h(57.)0 1395 y Fk(yylval)96 b Fp(External)19
b(v)m(ariable)i(in)f(whic)o(h)g Fk(yylex)f Fp(should)h(place)g(the)f
(seman)o(tic)h(v)m(alue)g(asso)q(ciated)g(with)f(a)240
1458 y(tok)o(en.)g(\(In)13 b(a)g(pure)h(parser,)f(it)g(is)h(a)f(lo)q
(cal)h(v)m(ariable)h(within)g Fk(yyparse)p Fp(,)d(and)h(its)h(address)f
(is)h(passed)240 1520 y(to)h Fk(yylex)p Fp(.\))j(See)e(Section)g(4.2.2)
e([Seman)o(tic)h(V)l(alues)h(of)f(T)l(ok)o(ens],)f(page)i(58.)0
1608 y Fk(yylloc)96 b Fp(External)14 b(v)m(ariable)g(in)h(whic)o(h)f
Fk(yylex)f Fp(should)h(place)g(the)g(line)h(and)f(column)g(n)o(um)o(b)q
(ers)g(asso)q(ciated)240 1670 y(with)j(a)f(tok)o(en.)22
b(\(In)17 b(a)f(pure)g(parser,)g(it)h(is)f(a)g(lo)q(cal)i(v)m(ariable)f
(within)h Fk(yyparse)p Fp(,)d(and)h(its)h(address)240
1732 y(is)e(passed)f(to)g Fk(yylex)p Fp(.\))19 b(Y)l(ou)14
b(can)h(ignore)f(this)h(v)m(ariable)h(if)e(y)o(ou)g(don't)g(use)h(the)f
(`)p Fk(@)p Fp(')g(feature)g(in)h(the)240 1795 y(grammar)f(actions.)20
b(See)15 b(Section)i(4.2.3)c([T)l(extual)i(P)o(ositions)h(of)f(T)l(ok)o
(ens],)f(page)h(59.)0 1883 y Fk(yynerrs)72 b Fp(Global)19
b(v)m(ariable)h(whic)o(h)f(Bison)h(incremen)o(ts)f(eac)o(h)f(time)h
(there)g(is)g(a)f(parse)g(error.)29 b(\(In)19 b(a)f(pure)240
1945 y(parser,)h(it)g(is)g(a)g(lo)q(cal)h(v)m(ariable)g(within)g
Fk(yyparse)p Fp(.\))29 b(See)19 b(Section)h(4.3)e([The)g(Error)g(Rep)q
(orting)240 2007 y(F)l(unction)e Fk(yyerror)p Fp(],)d(page)j(60.)0
2095 y Fk(yyparse)72 b Fp(The)19 b(parser)f(function)h(pro)q(duced)g(b)
o(y)f(Bison;)j(call)e(this)g(function)g(to)f(start)f(parsing.)29
b(See)19 b(Sec-)240 2157 y(tion)c(4.1)g([The)g(P)o(arser)f(F)l(unction)
i Fk(yyparse)p Fp(],)d(page)j(57.)0 2245 y Fk(\045left)120
b Fp(Bison)18 b(declaration)g(to)f(assign)g(left)h(asso)q(ciativit)o(y)
f(to)g(tok)o(en\(s\).)25 b(See)18 b(Section)g(3.6.2)e([Op)q(erator)240
2307 y(Precedence],)g(page)f(52.)0 2395 y Fk(\045nonassoc)240
2458 y Fp(Bison)k(declaration)f(to)g(assign)g(nonasso)q(ciativit)o(y)g
(to)g(tok)o(en\(s\).)27 b(See)18 b(Section)h(3.6.2)e([Op)q(erator)240
2520 y(Precedence],)f(page)f(52.)0 2608 y Fk(\045prec)120
b Fp(Bison)18 b(declaration)g(to)f(assign)g(a)g(precedence)i(to)e(a)g
(sp)q(eci\014c)i(rule.)27 b(See)18 b(Section)g(5.4)e([Con)o(text-)240
2670 y(Dep)q(enden)o(t)g(Precedence],)g(page)f(70.)p
eop
%%Page: 93 95
93 94 bop 0 -58 a Fp(App)q(endix)17 b(A:)e(Bison)h(Sym)o(b)q(ols)1344
b(93)0 183 y Fk(\045pure_parser)240 246 y Fp(Bison)23
b(declaration)g(to)f(request)h(a)f(pure)h(\(reen)o(tran)o(t\))e
(parser.)41 b(See)23 b(Section)h(3.6.7)d([A)h(Pure)240
308 y(\(Reen)o(tran)o(t\))14 b(P)o(arser],)g(page)h(54.)0
395 y Fk(\045right)96 b Fp(Bison)16 b(declaration)f(to)f(assign)h(righ)
o(t)g(asso)q(ciativit)o(y)g(to)g(tok)o(en\(s\).)j(See)e(Section)f
(3.6.2)f([Op)q(erator)240 457 y(Precedence],)i(page)f(52.)0
544 y Fk(\045start)96 b Fp(Bison)19 b(declaration)g(to)e(sp)q(ecify)j
(the)e(start)f(sym)o(b)q(ol.)29 b(See)19 b(Section)g(3.6.6)e([The)h
(Start-Sym)o(b)q(ol],)240 607 y(page)d(54.)0 694 y Fk(\045token)96
b Fp(Bison)16 b(declaration)g(to)f(declare)h(tok)o(en\(s\))e(without)h
(sp)q(ecifying)j(precedence.)j(See)16 b(Section)h(3.6.1)240
756 y([T)l(ok)o(en)e(T)o(yp)q(e)g(Names],)f(page)h(51.)0
843 y Fk(\045type)120 b Fp(Bison)19 b(declaration)g(to)f(declare)h(non)
o(terminals.)30 b(See)19 b(Section)h(3.6.4)d([Non)o(terminal)h(Sym)o(b)
q(ols],)240 906 y(page)d(53.)0 993 y Fk(\045union)96
b Fp(Bison)18 b(declaration)g(to)e(sp)q(ecify)i(sev)o(eral)g(p)q
(ossible)h(data)d(t)o(yp)q(es)h(for)g(seman)o(tic)g(v)m(alues.)26
b(See)18 b(Sec-)240 1055 y(tion)d(3.6.3)f([The)h(Collection)i(of)d(V)l
(alue)j(T)o(yp)q(es],)d(page)h(52.)62 1204 y(These)h(are)f(the)g
(punctuation)h(and)f(delimiters)i(used)f(in)g(Bison)g(input:)0
1354 y(`)p Fk(\045\045)p Fp(')166 b(Delimiter)13 b(used)e(to)g
(separate)g(the)g(grammar)f(rule)i(section)g(from)e(the)i(Bison)f
(declarations)h(section)240 1416 y(or)21 b(the)h(additional)i(C)d(co)q
(de)i(section.)40 b(See)23 b(Section)g(1.7)e([The)g(Ov)o(erall)i(La)o
(y)o(out)e(of)h(a)f(Bison)240 1478 y(Grammar],)13 b(page)i(18.)0
1566 y(`)p Fk(\045{)g(\045})p Fp(')103 b(All)15 b(co)q(de)f(listed)h(b)
q(et)o(w)o(een)f(`)p Fk(\045{)p Fp(')f(and)h(`)p Fk(\045})p
Fp(')e(is)i(copied)h(directly)g(to)e(the)h(output)f(\014le)i(unin)o
(terpreted.)240 1628 y(Suc)o(h)f(co)q(de)g(forms)f(the)g(\\C)g
(declarations")h(section)g(of)f(the)h(input)g(\014le.)21
b(See)14 b(Section)g(3.1)e([Outline)240 1690 y(of)j(a)g(Bison)h
(Grammar],)c(page)j(39.)0 1777 y(`)p Fk(/*)p Fh(:)8 b(:)g(:)m
Fk(*/)p Fp(')66 b(Commen)o(t)14 b(delimiters,)j(as)e(in)h(C.)0
1864 y(`)p Fk(:)p Fp(')190 b(Separates)19 b(a)g(rule's)h(result)f(from)
g(its)g(comp)q(onen)o(ts.)33 b(See)20 b(Section)g(3.3)e([Syn)o(tax)h
(of)g(Grammar)240 1927 y(Rules],)d(page)f(42.)0 2014
y(`)p Fk(;)p Fp(')190 b(T)l(erminates)15 b(a)g(rule.)21
b(See)16 b(Section)g(3.3)e([Syn)o(tax)h(of)f(Grammar)g(Rules],)i(page)f
(42.)0 2101 y(`)p Fk(|)p Fp(')190 b(Separates)17 b(alternate)g(rules)h
(for)f(the)g(same)g(result)h(non)o(terminal.)27 b(See)17
b(Section)i(3.3)d([Syn)o(tax)g(of)240 2163 y(Grammar)e(Rules],)i(page)f
(42.)p eop
%%Page: 94 96
94 95 bop 0 -58 a Fp(94)1697 b(Bison)16 b(1.20)p eop
%%Page: 95 97
95 96 bop 0 -58 a Fp(App)q(endix)17 b(B:)e(Glossary)1465
b(95)0 183 y Fm(App)r(endix)13 b(B)41 b(Glossary)0 371
y Fp(Bac)o(kus-Naur)15 b(F)l(orm)g(\(BNF\))240 433 y(F)l(ormal)10
b(metho)q(d)g(of)g(sp)q(ecifying)i(con)o(text-free)e(grammars.)17
b(BNF)10 b(w)o(as)f(\014rst)h(used)h(in)g(the)f Fl(ALGOL-)240
495 y(60)18 b Fp(rep)q(ort,)d(1963.)j(See)e(Section)g(1.1)f([Languages)
f(and)i(Con)o(text-F)l(ree)e(Grammars],)f(page)i(13.)0
578 y(Con)o(text-free)f(grammars)240 640 y(Grammars)h(sp)q(eci\014ed)k
(as)d(rules)h(that)f(can)h(b)q(e)g(applied)i(regardless)e(of)f(con)o
(text.)23 b(Th)o(us,)17 b(if)g(there)240 702 y(is)f(a)f(rule)i(whic)o
(h)f(sa)o(ys)f(that)g(an)h(in)o(teger)f(can)h(b)q(e)g(used)h(as)e(an)g
(expression,)i(in)o(tegers)e(are)h(allo)o(w)o(ed)240
765 y Fl(an)o(ywhere)22 b Fp(an)e(expression)g(is)g(p)q(ermitted.)34
b(See)21 b(Section)f(1.1)f([Languages)g(and)h(Con)o(text-F)l(ree)240
827 y(Grammars],)13 b(page)i(13.)0 909 y(Dynamic)h(allo)q(cation)240
972 y(Allo)q(cation)g(of)e(memory)g(that)g(o)q(ccurs)h(during)g
(execution,)h(rather)e(than)g(at)g(compile)i(time)f(or)f(on)240
1034 y(en)o(try)h(to)f(a)h(function.)0 1116 y(Empt)o(y)g(string)240
1179 y(Analogous)20 b(to)g(the)g(empt)o(y)g(set)g(in)h(set)e(theory)l
(,)i(the)f(empt)o(y)g(string)g(is)h(a)f(c)o(haracter)f(string)h(of)240
1241 y(length)c(zero.)0 1323 y(Finite-state)g(stac)o(k)e(mac)o(hine)240
1386 y(A)20 b(\\mac)o(hine")h(that)f(has)g(discrete)h(states)e(in)i
(whic)o(h)g(it)g(is)g(said)g(to)e(exist)i(at)f(eac)o(h)g(instan)o(t)g
(in)240 1448 y(time.)i(As)15 b(input)i(to)e(the)h(mac)o(hine)g(is)g
(pro)q(cessed,)h(the)e(mac)o(hine)i(mo)o(v)o(es)e(from)g(state)f(to)i
(state)e(as)240 1510 y(sp)q(eci\014ed)g(b)o(y)e(the)f(logic)i(of)e(the)
h(mac)o(hine.)20 b(In)12 b(the)g(case)g(of)f(the)h(parser,)g(the)g
(input)h(is)f(the)g(language)240 1573 y(b)q(eing)19 b(parsed,)f(and)g
(the)g(states)f(corresp)q(ond)h(to)f(v)m(arious)h(stages)f(in)i(the)f
(grammar)e(rules.)28 b(See)240 1635 y(Chapter)15 b(5)g([The)g(Bison)h
(P)o(arser)e(Algorithm)i(],)e(page)h(65.)0 1717 y(Grouping)53
b(A)13 b(language)h(construct)e(that)h(is)g(\(in)h(general\))f
(grammatically)h(divisible;)i(for)d(example,)h(`expres-)240
1780 y(sion')k(or)f(`declaration')h(in)g(C.)f(See)i(Section)f(1.1)f
([Languages)g(and)h(Con)o(text-F)l(ree)f(Grammars],)240
1842 y(page)e(13.)0 1924 y(In\014x)h(op)q(erator)240
1987 y(An)d(arithmetic)h(op)q(erator)e(that)h(is)g(placed)h(b)q(et)o(w)
o(een)g(the)f(op)q(erands)g(on)g(whic)o(h)h(it)g(p)q(erforms)e(some)240
2049 y(op)q(eration.)0 2131 y(Input)k(stream)240 2194
y(A)f(con)o(tin)o(uous)h(\015o)o(w)e(of)h(data)g(b)q(et)o(w)o(een)g
(devices)i(or)e(programs.)0 2276 y(Language)g(construct)240
2338 y(One)i(of)e(the)h(t)o(ypical)g(usage)g(sc)o(hemas)g(of)f(the)h
(language.)22 b(F)l(or)15 b(example,)h(one)g(of)f(the)h(constructs)240
2401 y(of)h(the)g(C)g(language)h(is)g(the)f Fk(if)g Fp(statemen)o(t.)25
b(See)18 b(Section)g(1.1)e([Languages)h(and)h(Con)o(text-F)l(ree)240
2463 y(Grammars],)13 b(page)i(13.)0 2545 y(Left)g(asso)q(ciativit)o(y)
240 2608 y(Op)q(erators)i(ha)o(ving)g(left)h(asso)q(ciativit)o(y)f(are)
g(analyzed)h(from)f(left)g(to)g(righ)o(t:)24 b(`)p Fk(a+b+c)p
Fp(')15 b(\014rst)i(com-)240 2670 y(putes)12 b(`)p Fk(a+b)p
Fp(')e(and)i(then)g(com)o(bines)g(with)g(`)p Fk(c)p Fp('.)18
b(See)12 b(Section)h(5.3)d([Op)q(erator)h(Precedence],)i(page)f(68.)p
eop
%%Page: 96 98
96 97 bop 0 -58 a Fp(96)1697 b(Bison)16 b(1.20)0 183
y(Left)f(recursion)240 246 y(A)i(rule)g(whose)g(result)g(sym)o(b)q(ol)f
(is)i(also)e(its)h(\014rst)f(comp)q(onen)o(t)h(sym)o(b)q(ol;)g(for)f
(example,)h(`)p Fk(expseq1)240 308 y(:)e(expseq1)f(',')h(exp;)p
Fp('.)k(See)d(Section)g(3.4)e([Recursiv)o(e)i(Rules],)g(page)f(43.)0
396 y(Left-to-righ)o(t)g(parsing)240 458 y(P)o(arsing)f(a)g(sen)o
(tence)i(of)e(a)g(language)h(b)o(y)f(analyzing)i(it)f(tok)o(en)f(b)o(y)
g(tok)o(en)g(from)g(left)h(to)f(righ)o(t.)19 b(See)240
520 y(Chapter)c(5)g([The)g(Bison)h(P)o(arser)e(Algorithm)i(],)e(page)h
(65.)0 608 y(Lexical)i(analyzer)f(\(scanner\))240 670
y(A)f(function)h(that)f(reads)g(an)g(input)h(stream)e(and)h(returns)g
(tok)o(ens)g(one)g(b)o(y)g(one.)20 b(See)c(Section)g(4.2)240
733 y([The)f(Lexical)i(Analyzer)f(F)l(unction)g Fk(yylex)p
Fp(],)e(page)h(57.)0 820 y(Lexical)i(tie-in)240 883 y(A)h(\015ag,)g
(set)g(b)o(y)f(actions)h(in)h(the)f(grammar)f(rules,)i(whic)o(h)f
(alters)g(the)g(w)o(a)o(y)f(tok)o(ens)h(are)f(parsed.)240
945 y(See)f(Section)g(7.2)e([Lexical)j(Tie-ins],)f(page)f(82.)0
1033 y(Lo)q(ok-ahead)h(tok)o(en)240 1095 y(A)11 b(tok)o(en)g(already)g
(read)g(but)g(not)f(y)o(et)h(shifted.)19 b(See)12 b(Section)g(5.1)e
([Lo)q(ok-Ahead)h(T)l(ok)o(ens],)g(page)g(66.)0 1183
y(LALR\(1\))58 b(The)15 b(class)h(of)e(con)o(text-free)h(grammars)f
(that)g(Bison)i(\(lik)o(e)f(most)g(other)f(parser)h(generators\))f(can)
240 1245 y(handle;)26 b(a)c(subset)g(of)f(LR\(1\).)40
b(See)23 b(Section)f(5.7)f([Mysterious)h(Reduce/Reduce)i(Con\015icts],)
240 1308 y(page)15 b(74.)0 1395 y(LR\(1\))120 b(The)14
b(class)g(of)f(con)o(text-free)g(grammars)f(in)i(whic)o(h)g(at)f(most)g
(one)g(tok)o(en)g(of)h(lo)q(ok-ahead)g(is)g(needed)240
1458 y(to)h(disam)o(biguate)g(the)h(parsing)f(of)g(an)o(y)g(piece)h(of)
f(input.)0 1546 y(Non)o(terminal)h(sym)o(b)q(ol)240 1608
y(A)11 b(grammar)f(sym)o(b)q(ol)h(standing)h(for)e(a)h(grammatical)g
(construct)g(that)f(can)i(b)q(e)f(expressed)h(through)240
1670 y(rules)19 b(in)g(terms)e(of)h(smaller)h(constructs;)g(in)f(other)
g(w)o(ords,)g(a)g(construct)f(that)h(is)g(not)g(a)g(tok)o(en.)240
1732 y(See)e(Section)g(3.2)e([Sym)o(b)q(ols],)h(page)g(40.)0
1820 y(P)o(arse)f(error)240 1883 y(An)20 b(error)f(encoun)o(tered)h
(during)g(parsing)g(of)f(an)g(input)i(stream)e(due)h(to)f(in)o(v)m
(alid)i(syn)o(tax.)32 b(See)240 1945 y(Chapter)15 b(6)g([Error)f(Reco)o
(v)o(ery],)g(page)h(77.)0 2033 y(P)o(arser)113 b(A)14
b(function)g(that)f(recognizes)h(v)m(alid)h(sen)o(tences)f(of)f(a)g
(language)h(b)o(y)f(analyzing)i(the)e(syn)o(tax)g(struc-)240
2095 y(ture)i(of)g(a)g(set)g(of)f(tok)o(ens)h(passed)h(to)e(it)i(from)e
(a)h(lexical)i(analyzer.)0 2183 y(P)o(ost\014x)d(op)q(erator)240
2245 y(An)h(arithmetic)g(op)q(erator)e(that)h(is)g(placed)i(after)d
(the)i(op)q(erands)g(up)q(on)g(whic)o(h)g(it)f(p)q(erforms)g(some)240
2307 y(op)q(eration.)0 2395 y(Reduction)39 b(Replacing)15
b(a)e(string)g(of)g(non)o(terminals)h(and/or)f(terminals)h(with)f(a)g
(single)i(non)o(terminal,)f(accord-)240 2458 y(ing)i(to)e(a)h(grammar)f
(rule.)21 b(See)15 b(Chapter)g(5)g([The)g(Bison)h(P)o(arser)e
(Algorithm)i(],)e(page)h(65.)0 2545 y(Reen)o(tran)o(t)42
b(A)14 b(reen)o(tran)o(t)e(subprogram)h(is)h(a)f(subprogram)g(whic)o(h)
h(can)g(b)q(e)g(in)g(in)o(v)o(ok)o(ed)g(an)o(y)f(n)o(um)o(b)q(er)h(of)f
(times)240 2608 y(in)k(parallel,)g(without)f(in)o(terference)g(b)q(et)o
(w)o(een)h(the)e(v)m(arious)i(in)o(v)o(o)q(cations.)22
b(See)16 b(Section)h(3.6.7)d([A)240 2670 y(Pure)h(\(Reen)o(tran)o(t\))g
(P)o(arser],)e(page)i(54.)p eop
%%Page: 97 99
97 98 bop 0 -58 a Fp(App)q(endix)17 b(B:)e(Glossary)1465
b(97)0 183 y(Rev)o(erse)16 b(p)q(olish)h(notation)240
246 y(A)e(language)h(in)g(whic)o(h)g(all)g(op)q(erators)e(are)h(p)q
(ost\014x)g(op)q(erators.)0 333 y(Righ)o(t)h(recursion)240
395 y(A)f(rule)i(whose)e(result)h(sym)o(b)q(ol)g(is)f(also)h(its)f
(last)h(comp)q(onen)o(t)f(sym)o(b)q(ol;)h(for)f(example,)g(`)p
Fk(expseq1:)240 457 y(exp)g(',')f(expseq1;)p Fp('.)19
b(See)d(Section)g(3.4)e([Recursiv)o(e)i(Rules],)g(page)f(43.)0
544 y(Seman)o(tics)42 b(In)19 b(computer)f(languages,)h(the)g(seman)o
(tics)g(are)f(sp)q(eci\014ed)i(b)o(y)f(the)f(actions)h(tak)o(en)f(for)f
(eac)o(h)i(in-)240 607 y(stance)d(of)g(the)h(language,)f(i.e.,)h(the)f
(meaning)h(of)f(eac)o(h)g(statemen)o(t.)23 b(See)17 b(Section)g(3.5)e
([De\014ning)240 669 y(Language)g(Seman)o(tics],)g(page)g(44.)0
756 y(Shift)146 b(A)16 b(parser)g(is)g(said)h(to)e(shift)h(when)h(it)f
(mak)o(es)f(the)h(c)o(hoice)h(of)f(analyzing)h(further)f(input)h(from)e
(the)240 818 y(stream)e(rather)h(than)f(reducing)j(immediately)f(some)f
(already-recognized)i(rule.)k(See)15 b(Chapter)e(5)240
881 y([The)i(Bison)h(P)o(arser)e(Algorithm)i(],)e(page)h(65.)0
968 y(Single-c)o(haracter)h(literal)240 1030 y(A)11 b(single)h(c)o
(haracter)e(that)h(is)g(recognized)h(and)f(in)o(terpreted)h(as)e(is.)19
b(See)12 b(Section)g(1.2)e([F)l(rom)f(F)l(ormal)240 1092
y(Rules)17 b(to)d(Bison)i(Input],)f(page)g(15.)0 1180
y(Start)f(sym)o(b)q(ol)240 1242 y(The)20 b(non)o(terminal)g(sym)o(b)q
(ol)f(that)g(stands)g(for)g(a)g(complete)h(v)m(alid)h(utterance)e(in)h
(the)g(language)240 1304 y(b)q(eing)e(parsed.)26 b(The)18
b(start)e(sym)o(b)q(ol)h(is)h(usually)h(listed)f(as)f(the)g(\014rst)g
(non)o(terminal)h(sym)o(b)q(ol)f(in)h(a)240 1366 y(language)d(sp)q
(eci\014cation.)22 b(See)16 b(Section)g(3.6.6)e([The)h(Start-Sym)o(b)q
(ol],)f(page)h(54.)0 1453 y(Sym)o(b)q(ol)h(table)240
1516 y(A)h(data)g(structure)g(where)h(sym)o(b)q(ol)g(names)f(and)h
(asso)q(ciated)g(data)e(are)h(stored)g(during)i(parsing)240
1578 y(to)d(allo)o(w)h(for)f(recognition)i(and)f(use)g(of)f(existing)i
(information)e(in)i(rep)q(eated)f(uses)g(of)g(a)f(sym)o(b)q(ol.)240
1640 y(See)g(Section)g(2.4)e([Multi-function)j(Calc],)e(page)g(31.)0
1727 y(T)l(ok)o(en)120 b(A)20 b(basic,)h(grammatically)e(indivisibl)q
(e)k(unit)d(of)f(a)g(language.)34 b(The)19 b(sym)o(b)q(ol)h(that)f
(describ)q(es)i(a)240 1790 y(tok)o(en)14 b(in)i(the)f(grammar)f(is)h(a)
g(terminal)h(sym)o(b)q(ol.)k(The)15 b(input)h(of)e(the)h(Bison)h
(parser)f(is)g(a)g(stream)240 1852 y(of)g(tok)o(ens)f(whic)o(h)i(comes)
g(from)e(the)h(lexical)i(analyzer.)k(See)16 b(Section)g(3.2)e([Sym)o(b)
q(ols],)h(page)g(40.)0 1939 y(T)l(erminal)h(sym)o(b)q(ol)240
2001 y(A)h(grammar)f(sym)o(b)q(ol)h(that)f(has)h(no)g(rules)h(in)g(the)
f(grammar)e(and)j(therefore)e(is)i(grammatically)240
2064 y(indivisibl)q(e.)25 b(The)17 b(piece)g(of)f(text)g(it)g(represen)
o(ts)g(is)h(a)e(tok)o(en.)22 b(See)17 b(Section)g(1.1)e([Languages)h
(and)240 2126 y(Con)o(text-F)l(ree)e(Grammars],)f(page)i(13.)p
eop
%%Page: 98 100
98 99 bop 0 -58 a Fp(98)1697 b(Bison)16 b(1.20)p eop
%%Page: 99 101
99 100 bop 0 -58 a Fp(Index)1795 b(99)0 183 y Fm(Index)0
425 y Fo($)0 491 y Fe($$)36 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)24 b Fc(45)0 550 y Fe($)p Fb(n)36 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23 b Fc(45)0
665 y Fo(\045)0 731 y Fe(\045expect)28 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)18 b Fc(53)0 790 y Fe(\045left)31 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)20 b Fc(69)0 848 y Fe(\045nonassoc)33 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)24 b Fc(69)0 906 y Fe(\045prec)31 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)20 b Fc(70)0 964 y Fe(\045pure)p
102 964 12 2 v 12 w(parser)33 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fc(54)0 1022
y Fe(\045right)29 b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
b Fc(69)0 1080 y Fe(\045start)29 b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
b Fc(54)0 1138 y Fe(\045token)29 b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
b Fc(51)0 1196 y Fe(\045type)31 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)20 b Fc(53)0 1254 y Fe(\045union)29 b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)19 b Fc(52)0 1370 y Fg(@)0 1436 y Fe(@)p Fb(n)36
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23
b Fc(62)0 1552 y Fg(|)0 1618 y Fe(|)29 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fc(42)0 1734 y Fo(A)0
1800 y Fc(action)32 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(45)0 1858 y(action)c(data)g(t)o(yp)q(es)31 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)17
b Fc(47)0 1916 y(action)d(features)g(summary)37 b Fd(:)6
b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)24 b Fc(61)0 1974 y(actions)14
b(in)g(mid-rule)37 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)22 b Fc(48)0 2033 y(actions,)14 b(seman)o(tic)34
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)19
b Fc(16)0 2091 y(additional)d(C)d(co)q(de)g(section)33
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)18 b Fc(40)0 2149
y(algorithm)d(of)e(parser)33 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)19 b Fc(65)0 2207 y(asso)q(ciativit)o(y)33
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)17 b Fc(69)0 2322 y Fo(B)0 2389 y Fc(Bac)o(kus-Naur)d
(form)31 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
18 b Fc(13)0 2447 y(Bison)c(declaration)i(summary)32
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)18 b Fc(55)0 2505 y(Bison)c(declarations)34
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(50)0 2563 y(Bison)c(declarations)i(\(in)o(tro)q(duction\))37
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)21 b Fc(40)0 2621 y(Bison)14 b(grammar)31 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)17
b Fc(15)0 2679 y(Bison)d(in)o(v)o(o)q(cation)39 b Fd(:)7
b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)23
b Fc(87)1015 425 y(Bison)15 b(parser)29 b Fd(:)6 b(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)16
b Fc(17)1015 483 y(Bison)f(parser)e(algorithm)38 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fc(65)1015 541
y(Bison)15 b(sym)o(b)q(ols,)f(table)g(of)32 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)19 b Fc(91)1015 599
y(Bison)c(utilit)o(y)31 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fc(17)1015
658 y(BNF)33 b Fd(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21
b Fc(13)1015 788 y Fo(C)1015 855 y Fc(C)13 b(co)q(de,)g(section)h(for)f
(additional)34 b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)18 b Fc(40)1015 913
y(C)13 b(declarations)j(section)35 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)21 b Fc(39)1015 971 y(C-language)15 b(in)o(terface)31
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)17
b Fc(57)1015 1029 y Fe(calc)33 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)22 b Fc(29)1015 1087 y(calculator,)15 b(in\014x)g(notation)38
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fc(29)1015 1145
y(calculator,)15 b(m)o(ulti-function)34 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)18 b Fc(31)1015 1203 y(calculator,)d(simple)39 b
Fd(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)25
b Fc(21)1015 1262 y(c)o(haracter)14 b(tok)o(en)30 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
b Fc(41)1015 1320 y(compiling)f(the)e(parser)30 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)17 b Fc(28)1015
1378 y(con\015icts)33 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)18
b Fc(67)1015 1436 y(con\015icts,)d(reduce/reduce)39 b
Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)25 b Fc(72)1015 1494
y(con\015icts,)15 b(suppressing)g(w)o(arnings)g(of)33
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)21 b Fc(53)1015 1552 y(con)o(text-dep)q(enden)o(t)16
b(precedence)36 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fc(70)1015 1610 y(con)o(text-free)
14 b(grammar)29 b Fd(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
b Fc(13)1015 1668 y(con)o(trollin)q(g)f(function)30 b
Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)16
b Fc(27)1015 1799 y Fo(D)1015 1866 y Fc(dangling)g Fe(else)32
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)21 b Fc(67)1015 1924 y(data)14 b(t)o(yp)q(es)g(in)f(actions)36
b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22
b Fc(47)1015 1982 y(data)14 b(t)o(yp)q(es)g(of)e(seman)o(tic)i(v)n
(alues)33 b Fd(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)19 b Fc(45)1015 2040 y(debugging)34
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)18 b Fc(85)1015 2098 y(declaration)e(summary)34
b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21
b Fc(55)1015 2156 y(declarations,)16 b(Bison)35 b Fd(:)6
b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
b Fc(50)1015 2214 y(declarations,)16 b(Bison)e(\(in)o(tro)q(duction\))
32 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)16 b Fc(40)1015 2273 y(declarations,)g(C)32 b
Fd(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)20 b Fc(39)1015 2331 y(declaring)c(op)q(erator)e(precedence)38
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)24 b Fc(52)1015 2389 y(declaring)16 b(the)d(start)g(sym)
o(b)q(ol)34 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Fc(54)1015
2447 y(declaring)c(tok)o(en)d(t)o(yp)q(e)h(names)32 b
Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)19 b Fc(51)1015 2505 y(declaring)d(v)n(alue)e
(t)o(yp)q(es)35 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
b Fc(52)1015 2563 y(declaring)16 b(v)n(alue)e(t)o(yp)q(es,)f(non)o
(terminals)36 b Fd(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)21 b Fc(53)1015 2621 y(default)15 b(action)36
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)22 b Fc(46)1015 2679 y(default)15 b(data)e(t)o(yp)q(e)31
b Fd(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)18
b Fc(45)p eop
%%Page: 100 102
100 101 bop 0 -58 a Fp(100)1674 b(Bison)16 b(1.20)0 183
y Fc(default)e(stac)o(k)f(limit)34 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)18 b Fc(76)0 241 y(default)c(start)f(sym)o
(b)q(ol)33 b Fd(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
b Fc(54)0 299 y(de\014ning)c(language)g(seman)o(tics)38
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)24 b Fc(44)0 417 y Fo(E)0 483
y Fe(else)p Fc(,)11 b(dangling)39 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fc(67)0 541
y Fe(error)31 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)20
b Fc(77)0 599 y(error)13 b(reco)o(v)o(ery)35 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
21 b Fc(77)0 657 y(error)13 b(reco)o(v)o(ery)m(,)g(simple)32
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)17
b Fc(30)0 715 y(error)c(rep)q(orting)i(function)37 b
Fd(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23 b Fc(60)0 774
y(error)13 b(rep)q(orting)i(routine)38 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)24 b Fc(27)0 832 y(examples,)14 b(simple)36
b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)21
b Fc(21)0 890 y(exercises)37 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22
b Fc(38)0 1007 y Fo(F)0 1073 y Fc(\014le)14 b(format)29
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)16 b Fc(18)0 1131 y(\014nite-state)e(mac)o
(hine)38 b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
b Fc(71)0 1190 y(formal)14 b(grammar)31 b Fd(:)7 b(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)18 b Fc(15)0
1248 y(format)13 b(of)g(grammar)g(\014le)37 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)23 b Fc(18)0 1365
y Fo(G)0 1431 y Fc(glossary)34 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)19
b Fc(95)0 1489 y(grammar)13 b(\014le)36 b Fd(:)7 b(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22
b Fc(18)0 1547 y(grammar)13 b(rule)h(syn)o(tax)36 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)21 b Fc(42)0
1606 y(grammar)13 b(rules)h(section)34 b Fd(:)7 b(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)20 b Fc(40)0 1664 y(grammar,)13 b(Bison)35
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
20 b Fc(15)0 1722 y(grammar,)13 b(con)o(text-free)33
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19 b Fc(13)0
1780 y(grouping,)c(syn)o(tactic)34 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)20 b Fc(13)0 1897 y Fo(I)0 1963
y Fc(in\014x)14 b(notation)h(calculator)36 b Fd(:)6 b(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)21 b Fc(29)0 2022 y(in)o(terface)37 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)23 b Fc(57)0 2080 y(in)o(tro)q(duction)34
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)18 b Fc(1)0 2138 y(in)o(v)o(oking)e(Bison)36
b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)22 b Fc(87)0 2196 y(in)o(v)o(oking)16 b(Bison)e(under)g(VMS)34
b Fd(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)21 b Fc(89)0 2313 y Fo(L)0
2379 y Fc(LALR\(1\))31 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(75)0 2438 y(language)d(seman)o(tics,)f(de\014ning)33
b Fd(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)18 b Fc(44)0 2496 y(la)o(y)o(out)c(of)f(Bison)h
(grammar)36 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fc(18)0
2554 y(left)13 b(recursion)34 b Fd(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b Fc(43)0
2612 y(lexical)c(analyzer)32 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fc(57)0 2670 y(lexical)e
(analyzer,)g(purp)q(ose)30 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)16
b Fc(17)1015 183 y(lexical)g(analyzer,)e(writing)37 b
Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fc(25)1015 241
y(lexical)16 b(tie-in)32 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fc(82)1015
299 y(literal)e(tok)o(en)32 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)19 b Fc(41)1015
358 y(lo)q(ok-ahead)d(tok)o(en)33 b Fd(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fc(66)1015 416 y(LR\(1\))32
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Fc(75)1015
533 y Fo(M)1015 599 y Fc(main)14 b(function)h(in)f(simple)g(example)32
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)17 b Fc(27)1015 657 y Fe(mfcalc)30 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)19 b Fc(31)1015 715 y(mid-rule)c(actions)33 b
Fd(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19
b Fc(48)1015 774 y(m)o(ulti-function)d(calculator)39
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fc(31)1015 832
y(m)o(utual)15 b(recursion)36 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fc(44)1015 949 y Fo(N)1015
1015 y Fc(non)o(terminal)16 b(sym)o(b)q(ol)37 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fc(40)1015
1132 y Fo(O)1015 1199 y Fc(op)q(erator)14 b(precedence)35
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)21
b Fc(68)1015 1257 y(op)q(erator)14 b(precedence,)g(declaring)34
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)19 b Fc(52)1015 1315 y(options)c(for)e(in)o(v)o(oking)i
(Bison)34 b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)20 b Fc(87)1015
1373 y(o)o(v)o(er\015o)o(w)14 b(of)f(parser)g(stac)o(k)31
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fc(76)1015
1490 y Fo(P)1015 1557 y Fc(parse)c(error)34 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)21 b Fc(60)1015 1615 y(parser)32 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Fc(17)1015 1673
y(parser)c(stac)o(k)33 b Fd(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)20 b Fc(65)1015
1731 y(parser)14 b(stac)o(k)f(o)o(v)o(er\015o)o(w)36
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22
b Fc(76)1015 1789 y(parser)14 b(state)35 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22
b Fc(71)1015 1847 y(p)q(olish)16 b(notation)e(calculator)32
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Fc(21)1015 1905
y(precedence)e(declarations)32 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)17 b Fc(52)1015 1963 y(precedence)e(of)d(op)q(erators)31
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)17 b Fc(68)1015
2022 y(precedence,)d(con)o(text-dep)q(enden)o(t)32 b
Fd(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)17 b Fc(70)1015 2080 y(precedence,)d(unary)g(op)q(erator)34
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fc(70)1015 2138 y(prev)o(en)o(ting)15
b(w)o(arnings)g(ab)q(out)f(con\015icts)32 b Fd(:)6 b(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Fc(53)1015 2196
y(pure)14 b(parser)30 b Fd(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)17 b Fc(54)1015
2313 y Fo(R)1015 2379 y Fc(reco)o(v)o(ery)d(from)f(errors)32
b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
b Fc(77)1015 2438 y(recursiv)o(e)15 b(rule)30 b Fd(:)7
b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)17 b Fc(43)1015 2496 y(reduce/reduce)e(con\015ict)35
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fc(72)1015
2554 y(reduction)31 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)16 b
Fc(65)1015 2612 y(reen)o(tran)o(t)e(parser)34 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)20
b Fc(54)1015 2670 y(rev)o(erse)14 b(p)q(olish)h(notation)38
b Fd(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Fc(21)p
eop
%%Page: 101 103
101 102 bop 0 -58 a Fp(Index)1772 b(101)0 183 y Fc(righ)o(t)14
b(recursion)38 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)24 b Fc(43)0 241 y Fe(rpcalc)29 b
Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Fc(21)0 299 y(rule)14
b(syn)o(tax)32 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)18 b Fc(42)0 358
y(rules)c(section)g(for)f(grammar)29 b Fd(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
16 b Fc(40)0 416 y(running)f(Bison)f(\(in)o(tro)q(duction\))38
b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)22 b Fc(27)0 557 y Fo(S)0 623 y Fc(seman)o(tic)14
b(actions)31 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)16 b Fc(16)0 681 y(seman)o(tic)e(v)n(alue)38
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)23 b Fc(16)0 739 y(seman)o(tic)14 b(v)n(alue)g(t)o(yp)q(e)36
b Fd(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
b Fc(45)0 798 y(shift/reduce)15 b(con\015icts)36 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)21 b Fc(67)0
856 y(shifting)39 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
b Fc(65)0 914 y(simple)15 b(examples)33 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Fc(21)0
972 y(single-c)o(haracter)e(literal)34 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)19 b Fc(41)0 1030 y(stac)o(k)13 b(o)o(v)o(er\015o)o(w)
34 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)20 b Fc(76)0 1088 y(stac)o(k,)13 b(parser)37
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)23 b Fc(65)0 1146 y(stages)14 b(in)f(using)i(Bison)35
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)21
b Fc(18)0 1204 y(start)13 b(sym)o(b)q(ol)38 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)24 b Fc(14)0 1263 y(start)13 b(sym)o(b)q(ol,)h(declaring)37
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fc(54)0
1321 y(state)13 b(\(of)g(parser\))33 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)19 b Fc(71)0 1379
y(summary)m(,)13 b(action)h(features)34 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)20 b Fc(61)0 1437 y(summary)m(,)13 b(Bison)i(declaration)38
b Fd(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)23 b Fc(55)0 1495 y(suppressing)16
b(con\015ict)e(w)o(arnings)36 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)21 b
Fc(53)0 1553 y(sym)o(b)q(ol)33 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)18
b Fc(40)0 1611 y(sym)o(b)q(ol)c(table)g(example)38 b
Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fc(34)0
1669 y(sym)o(b)q(ols)15 b(\(abstract\))37 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)23 b Fc(13)0 1727 y(sym)o(b)q(ols)15
b(in)e(Bison,)h(table)g(of)35 b Fd(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)22
b Fc(91)0 1786 y(syn)o(tactic)14 b(grouping)32 b Fd(:)6
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
b Fc(13)0 1844 y(syn)o(tax)d(error)31 b Fd(:)6 b(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)18
b Fc(60)0 1902 y(syn)o(tax)c(of)f(grammar)g(rules)32
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fc(42)0 2043
y Fo(T)0 2109 y Fc(terminal)d(sym)o(b)q(ol)32 b Fd(:)7
b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)18
b Fc(40)0 2167 y(tok)o(en)37 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23
b Fc(13)0 2226 y(tok)o(en)14 b(t)o(yp)q(e)36 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)23 b Fc(40)0 2284 y(tok)o(en)14 b(t)o(yp)q(e)f(names,)g
(declaring)37 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fc(51)0 2342
y(tracing)14 b(the)f(parser)36 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)22 b Fc(85)1015 183 y Fo(U)1015
250 y Fc(unary)14 b(op)q(erator)g(precedence)31 b Fd(:)6
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)17 b Fc(70)1015 308 y(using)e(Bison)38
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)24 b Fc(18)1015 416 y Fo(V)1015 482 y
Fc(v)n(alue)15 b(t)o(yp)q(e,)e(seman)o(tic)31 b Fd(:)6
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Fc(45)1015
540 y(v)n(alue)d(t)o(yp)q(es,)e(declaring)40 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)25 b Fc(52)1015
598 y(v)n(alue)15 b(t)o(yp)q(es,)e(non)o(terminals,)i(declaring)39
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)24
b Fc(53)1015 656 y(v)n(alue,)14 b(seman)o(tic)32 b Fd(:)6
b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)18
b Fc(16)1015 715 y(VMS)32 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
18 b Fc(89)1015 823 y Fo(W)1015 889 y Fc(w)o(arnings,)d(prev)o(en)o
(ting)38 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
b Fc(53)1015 947 y(writing)15 b(a)e(lexical)i(analyzer)35
b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fc(25)1015 1055
y Fo(Y)1015 1121 y Fe(YYABORT)28 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(57)1015 1180 y Fe(YYACCEPT)27 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
b Fc(57)1015 1238 y Fe(YYBACKUP)27 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
b Fc(62)1015 1296 y Fe(yychar)30 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)19
b Fc(66)1015 1354 y Fe(yyclearin)33 b Fd(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24
b Fc(78)1015 1412 y Fe(yydebug)k Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(85)1015 1470 y Fe(YYDEBUG)28 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(85)1015 1528 y Fe(YYEMPTY)28 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(62)1015 1586 y Fe(yyerrok)28 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(78)1015 1644 y Fe(yyerror)28 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(60)1015 1703 y Fe(YYERROR)28 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(62)1015 1761 y Fe(YYERROR)p 1157 1761 12 2 v 12
w(VERBOSE)29 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)19 b Fc(60)1015 1819 y Fe(YYINITDEPTH)30 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)22 b Fc(76)1015 1877 y Fe(yylex)32 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)21 b Fc(57)1015 1935 y Fe(yylloc)30 b Fd(:)6
b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b Fc(59)1015 1993 y Fe(YYLTYPE)28
b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18 b Fc(59)1015 2051
y Fe(yylval)30 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)19
b Fc(58)1015 2109 y Fe(YYMAXDEPTH)32 b Fd(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
b Fc(76)1015 2167 y Fe(yynerrs)28 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(61)1015 2226 y Fe(yyparse)28 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(57)1015 2284 y Fe(YYPRINT)28 b Fd(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)18
b Fc(85)1015 2342 y Fe(YYRECOVERIN)o(G)29 b Fd(:)7 b(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20
b Fc(79)p eop
%%Page: 102 104
102 103 bop 0 -58 a Fp(102)1674 b(Bison)16 b(1.20)p eop
%%Page: -1 105
-1 104 bop 1937 -58 a Fp(i)0 183 y Fm(T)-7 b(able)15
b(of)g(Con)n(ten)n(ts)0 351 y Fo(In)n(tro)r(duction)65
b Fa(:)10 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)40 b Fo(1)0 491
y(Conditions)23 b(for)f(Using)h(Bison)58 b Fa(:)10 b(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)35 b Fo(3)0 631 y(GNU)22 b(GENERAL)g(PUBLIC)g
(LICENSE)59 b Fa(:)10 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)37 b Fo(5)149 709 y Fp(Pream)o(ble)42 b Fh(:)7
b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fp(5)149 771 y(TERMS)16
b(AND)f(CONDITIONS)h(F)o(OR)g(COPYING,)f(DISTRIBUTION)i(AND)240
833 y(MODIFICA)l(TION)44 b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)26 b Fp(6)149 895 y(Ho)o(w)15 b(to)g(Apply)h(These)f(T)l
(erms)g(to)g(Y)l(our)g(New)h(Programs)33 b Fh(:)7 b(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)19
b Fp(11)0 1020 y Fo(1)67 b(The)22 b(Concepts)g(of)f(Bison)55
b Fa(:)10 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fo(13)149
1098 y Fp(1.1)45 b(Languages)15 b(and)g(Con)o(text-F)l(ree)g(Grammars)
36 b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)22 b Fp(13)149
1160 y(1.2)45 b(F)l(rom)14 b(F)l(ormal)h(Rules)i(to)d(Bison)i(Input)40
b Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24
b Fp(15)149 1222 y(1.3)45 b(Seman)o(tic)16 b(V)l(alues)41
b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25
b Fp(16)149 1285 y(1.4)45 b(Seman)o(tic)16 b(Actions)40
b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)24
b Fp(16)149 1347 y(1.5)45 b(Bison)16 b(Output:)k(the)15
b(P)o(arser)g(File)45 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)h(:)28 b Fp(17)149 1409 y(1.6)45 b(Stages)15
b(in)h(Using)f(Bison)38 b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)21
b Fp(18)149 1471 y(1.7)45 b(The)15 b(Ov)o(erall)i(La)o(y)o(out)d(of)h
(a)g(Bison)h(Grammar)36 b Fh(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)22
b Fp(18)0 1596 y Fo(2)67 b(Examples)53 b Fa(:)10 b(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)31 b Fo(21)149 1674 y Fp(2.1)45 b(Rev)o(erse)16
b(P)o(olish)g(Notation)e(Calculator)44 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)28 b Fp(21)299 1736 y(2.1.1)44 b(Declarations)15
b(for)g Fk(rpcalc)43 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)29 b Fp(21)299 1798 y(2.1.2)44 b(Grammar)13 b(Rules)k(for)e
Fk(rpcalc)38 b Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)24
b Fp(22)448 1861 y(2.1.2.1)44 b(Explanation)16 b(of)e
Fk(input)36 b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)21 b Fp(23)448
1923 y(2.1.2.2)44 b(Explanation)16 b(of)e Fk(line)38
b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)22 b Fp(23)448
1985 y(2.1.2.3)44 b(Explanation)16 b(of)e Fk(expr)38
b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)22 b Fp(24)299
2047 y(2.1.3)44 b(The)15 b Fk(rpcalc)g Fp(Lexical)h(Analyzer)41
b Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fp(25)299
2110 y(2.1.4)44 b(The)15 b(Con)o(trolling)h(F)l(unction)39
b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)23
b Fp(27)299 2172 y(2.1.5)44 b(The)15 b(Error)f(Rep)q(orting)j(Routine)
40 b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)23 b Fp(27)299
2234 y(2.1.6)44 b(Running)17 b(Bison)f(to)e(Mak)o(e)h(the)g(P)o(arser)
35 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)21 b Fp(27)299 2296 y(2.1.7)44
b(Compiling)16 b(the)g(P)o(arser)e(File)36 b Fh(:)7 b(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)19 b Fp(28)149 2359 y(2.2)45
b(In\014x)16 b(Notation)f(Calculator:)20 b Fk(calc)37
b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)22
b Fp(29)149 2421 y(2.3)45 b(Simple)17 b(Error)d(Reco)o(v)o(ery)38
b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fp(30)149 2483 y(2.4)45
b(Multi-F)l(unction)17 b(Calculator:)j Fk(mfcalc)34 b
Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20
b Fp(31)299 2545 y(2.4.1)44 b(Declarations)15 b(for)g
Fk(mfcalc)43 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
29 b Fp(32)299 2608 y(2.4.2)44 b(Grammar)13 b(Rules)k(for)e
Fk(mfcalc)38 b Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)24
b Fp(33)299 2670 y(2.4.3)44 b(The)15 b Fk(mfcalc)g Fp(Sym)o(b)q(ol)g(T)
l(able)41 b Fh(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)24
b Fp(34)p eop
%%Page: -2 106
-2 105 bop 0 -58 a Fp(ii)1719 b(Bison)16 b(1.20)149 42
y(2.5)45 b(Exercises)d Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)25 b Fp(38)0 166 y
Fo(3)67 b(Bison)22 b(Grammar)h(Files)62 b Fa(:)10 b(:)h(:)f(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)40 b Fo(39)149 244 y Fp(3.1)45 b(Outline)17
b(of)e(a)g(Bison)h(Grammar)36 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)22 b Fp(39)299
306 y(3.1.1)44 b(The)15 b(C)g(Declarations)h(Section)39
b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Fp(39)299
368 y(3.1.2)44 b(The)15 b(Bison)h(Declarations)f(Section)41
b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)24 b Fp(40)299 431 y(3.1.3)44
b(The)15 b(Grammar)f(Rules)i(Section)39 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)22 b Fp(40)299 493 y(3.1.4)44 b(The)15 b(Additional)i(C)e
(Co)q(de)h(Section)39 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
b Fp(40)149 555 y(3.2)45 b(Sym)o(b)q(ols,)15 b(T)l(erminal)i(and)e(Non)
o(terminal)44 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)28
b Fp(40)149 617 y(3.3)45 b(Syn)o(tax)15 b(of)g(Grammar)e(Rules)44
b Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)27 b Fp(42)149 680 y(3.4)45 b(Recursiv)o(e)17
b(Rules)36 b Fh(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)19 b Fp(43)149 742 y(3.5)45 b(De\014ning)16 b(Language)f(Seman)o
(tics)42 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)26 b Fp(44)299 804 y(3.5.1)44 b(Data)14 b(T)o(yp)q(es)h(of)
g(Seman)o(tic)h(V)l(alues)41 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25
b Fp(45)299 867 y(3.5.2)44 b(More)14 b(Than)i(One)f(V)l(alue)i(T)o(yp)q
(e)41 b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)25 b
Fp(45)299 929 y(3.5.3)44 b(Actions)35 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)19 b Fp(45)299 991 y(3.5.4)44
b(Data)14 b(T)o(yp)q(es)h(of)g(V)l(alues)h(in)g(Actions)39
b Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)23 b Fp(47)299 1053 y(3.5.5)44
b(Actions)15 b(in)h(Mid-Rule)42 b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)23 b Fp(48)149 1116
y(3.6)45 b(Bison)16 b(Declarations)36 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)21 b Fp(50)299 1178 y(3.6.1)44 b(T)l(ok)o(en)15
b(T)o(yp)q(e)g(Names)39 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)23 b Fp(51)299 1240 y(3.6.2)44
b(Op)q(erator)15 b(Precedence)45 b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fp(52)299 1302 y(3.6.3)44
b(The)15 b(Collection)i(of)e(V)l(alue)h(T)o(yp)q(es)39
b Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fp(52)299 1365
y(3.6.4)44 b(Non)o(terminal)16 b(Sym)o(b)q(ols)38 b Fh(:)7
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22
b Fp(53)299 1427 y(3.6.5)44 b(Suppressing)16 b(Con\015ict)g(W)l
(arnings)38 b Fh(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)22 b Fp(53)299
1489 y(3.6.6)44 b(The)15 b(Start-Sym)o(b)q(ol)43 b Fh(:)7
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)27 b Fp(54)299 1551 y(3.6.7)44 b(A)15 b(Pure)g(\(Reen)o(tran)o(t\))
g(P)o(arser)34 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)20
b Fp(54)299 1614 y(3.6.8)44 b(Bison)16 b(Declaration)f(Summary)42
b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)26 b Fp(55)149
1676 y(3.7)45 b(Multiple)17 b(P)o(arsers)d(in)i(the)g(Same)f(Program)39
b Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fp(56)0 1801
y Fo(4)67 b(P)n(arser)22 b(C-Language)g(In)n(terface)61
b Fa(:)10 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)h(:)f(:)g(:)39 b Fo(57)149 1878 y Fp(4.1)45 b(The)15
b(P)o(arser)g(F)l(unction)h Fk(yyparse)37 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)22 b Fp(57)149
1941 y(4.2)45 b(The)15 b(Lexical)i(Analyzer)f(F)l(unction)g
Fk(yylex)39 b Fh(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24
b Fp(57)299 2003 y(4.2.1)44 b(Calling)16 b(Con)o(v)o(en)o(tion)f(for)g
Fk(yylex)39 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)24
b Fp(58)299 2065 y(4.2.2)44 b(Seman)o(tic)15 b(V)l(alues)i(of)d(T)l(ok)
o(ens)38 b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22
b Fp(58)299 2127 y(4.2.3)44 b(T)l(extual)15 b(P)o(ositions)h(of)f(T)l
(ok)o(ens)36 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)21
b Fp(59)299 2190 y(4.2.4)44 b(Calling)16 b(for)f(Pure)g(P)o(arsers)41
b Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27
b Fp(60)149 2252 y(4.3)45 b(The)15 b(Error)g(Rep)q(orting)h(F)l
(unction)g Fk(yyerror)40 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)26
b Fp(60)149 2314 y(4.4)45 b(Sp)q(ecial)17 b(F)l(eatures)e(for)g(Use)g
(in)h(Actions)36 b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
20 b Fp(61)p eop
%%Page: -3 107
-3 106 bop 1912 -58 a Fp(iii)0 42 y Fo(5)67 b(The)22
b(Bison)h(P)n(arser)f(Algorithm)51 b Fa(:)10 b(:)h(:)f(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)28
b Fo(65)149 119 y Fp(5.1)45 b(Lo)q(ok-Ahead)16 b(T)l(ok)o(ens)35
b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)20 b Fp(66)149
182 y(5.2)45 b(Shift/Reduce)17 b(Con\015icts)38 b Fh(:)7
b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)22 b Fp(67)149 244 y(5.3)45 b(Op)q(erator)15
b(Precedence)36 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)19
b Fp(68)299 306 y(5.3.1)44 b(When)15 b(Precedence)i(is)f(Needed)44
b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)27 b Fp(68)299
368 y(5.3.2)44 b(Sp)q(ecifying)17 b(Op)q(erator)e(Precedence)37
b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)20 b Fp(69)299 431 y(5.3.3)44
b(Precedence)16 b(Examples)39 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)22 b Fp(69)299 493 y(5.3.4)44
b(Ho)o(w)14 b(Precedence)j(W)l(orks)39 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fp(70)149 555 y(5.4)45
b(Con)o(text-Dep)q(enden)o(t)15 b(Precedence)44 b Fh(:)7
b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27
b Fp(70)149 617 y(5.5)45 b(P)o(arser)14 b(States)41 b
Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)25
b Fp(71)149 680 y(5.6)45 b(Reduce/Reduce)18 b(Con\015icts)43
b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)h(:)f(:)27 b Fp(72)149 742 y(5.7)45 b(Mysterious)15
b(Reduce/Reduce)j(Con\015icts)38 b Fh(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)22 b Fp(74)149 804 y(5.8)45 b(Stac)o(k)15 b(Ov)o(er\015o)o(w,)f
(and)i(Ho)o(w)e(to)h(Av)o(oid)g(It)44 b Fh(:)7 b(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)h(:)28 b Fp(76)0 929 y Fo(6)67 b(Error)23 b(Reco)n(v)n(ery)60
b Fa(:)10 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)37 b Fo(77)0 1069 y(7)67 b(Handling)24 b(Con)n(text)e(Dep)r
(endencies)59 b Fa(:)10 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)h(:)37 b Fo(81)149 1147 y Fp(7.1)45 b(Seman)o(tic)16
b(Info)f(in)h(T)l(ok)o(en)f(T)o(yp)q(es)36 b Fh(:)7 b(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)20 b
Fp(81)149 1209 y(7.2)45 b(Lexical)17 b(Tie-ins)38 b Fh(:)7
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)21
b Fp(82)149 1271 y(7.3)45 b(Lexical)17 b(Tie-ins)g(and)e(Error)f(Reco)o
(v)o(ery)35 b Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)20
b Fp(83)0 1396 y Fo(8)67 b(Debugging)22 b(Y)-6 b(our)23
b(P)n(arser)58 b Fa(:)10 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
b Fo(85)0 1536 y(9)67 b(In)n(v)n(oking)24 b(Bison)53
b Fa(:)10 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)h(:)30 b Fo(87)149 1614 y Fp(9.1)45 b(Bison)16
b(Options)42 b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)h(:)25 b Fp(87)149 1676 y(9.2)45 b(Option)16 b(Cross)e(Key)45
b Fh(:)7 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)28 b
Fp(89)149 1738 y(9.3)45 b(In)o(v)o(oking)16 b(Bison)f(under)h(VMS)43
b Fh(:)8 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)h(:)27 b Fp(89)0 1863 y Fo(App)r(endix)d(A)67
b(Bison)23 b(Sym)n(b)r(ols)51 b Fa(:)10 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)28
b Fo(91)0 2003 y(App)r(endix)c(B)67 b(Glossary)62 b Fa(:)11
b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)40
b Fo(95)0 2143 y(Index)57 b Fa(:)10 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)h(:)f(:)g(:)34 b Fo(99)p eop
%%Page: -4 108
-4 107 bop 0 -58 a Fp(iv)1707 b(Bison)16 b(1.20)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF
